Linux.ChinaUnix.net
ChinaUnix | Linux首页 | 新闻 | 博客 | 文章 | 专栏 | 新手 | 方案 | 图书 | 下载 | 人才 | 手册 | wiki | 搜索     
Linux论坛
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


GCC-4.1.0发布

首页 » CU论坛 » Linux » 汇总贴列表 » 文档专区 » 程序开发 »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
loughsky
风云使者



UID:361370
注册:2006-1-10
最后登录: 2007-11-20
帖子:553
精华:0

可用积分:548 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


1楼 发表于 2008-4-14 16:21 

这一版本重点在于过程间优化(IPO)框架和相应的优化实现:

  • 基于剖视的内联,对于一些递归深度小的函数也可以实现内联。
  • 通过副作用分析确定纯函数和常函数。
  • 静态变量引用分析和type escape分析,消除冗余load操作和进行更好的寄存器分配。
  • 提高基于RTL的别名分析。
  • 全程序优化(-fwhole-program --combine )。

还有一个重点是向量化。自从引入SSA之后,很多优化都基于SSA进行。
关于纯函数和常函数:

  • 纯函数(pure function)是指不会影响它自己范围外任何事情的函数。它可以读取全局变量或者通过指针传递的变量,但是不可以对这些变量进行些操作。它也不可以读取volatile变量和外部资源(比如文件)。“函数的结果只依赖参数”。
  • 常函数(const function)是纯函数的更严格版本。它不会读取和写除参数外的任何数据,也不可以使用指针参数来读取数据。“函数的结果依赖于参数和全局及内存变量”。
  • 对于纯函数和常函数,如果返回值为void类型,则没有任何意义。GCC可以通过这些信息来进行CSE优化,比如对于常函数,如果参数在多次调用时不便,则GCC将替换后面的函数调用为前面已执行函数的返回值。
  • 函数属性是C语言的GNU扩展,允许程序员为GCC提供更多的信息。它作为函数声明的一部分,通过关键字__attribute__来制定。比如,int func(int a, int b) __attribute__ (pure);。一个函数可以具有多个属性。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30686/showart_531006.html



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我的博客 http://blog.chinaunix.net/u/30686/
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » CU论坛 » Linux » 汇总贴列表 » 文档专区 » 程序开发 »

 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - Linux时代 - Archiver - WAP - TOP

Processed in 0.046235 second(s), 6 queries , Gzip enabled