【发布时间】:2012-07-11 02:18:00
【问题描述】:
我正在研究代码优化并了解 gcc 内部结构。我在我的程序中写了一个简单的表达式,我检查了那个表达式的 gimple 表示,我不知道为什么 gcc 会这样做。 说我有一个表情:
if(i < 9)
然后在 gimple 表示中它将被转换为
if(i <= 8)
我不知道为什么 gcc 会这样做。是不是某种优化,如果是的话,谁能告诉我它如何优化我们的程序?
【问题讨论】:
-
我无法回答为什么特别是 gcc 会这样做,但我知道如果我正在编写编译器,我为什么会这样做。在源代码到源代码的转换阶段将
-
Cyber 编译器(在 Pascal 和 Fortran 中)也进行了这种优化。我认为他们更关心常量
8而不是9,因为8是通过移动1(一个始终保存在寄存器中的常量)产生的,而9需要几个操作来生成或(喘气)从内存常量中获取。我想知道:它对if (i < 8)做同样的事情吗? -
是的,它会对像这样的任何表达式做同样的事情
标签: c optimization gcc gimple