2013-02-10 22 views
0

浮点运算有没有办法在海湾合作委员会,以激活所有的时候,有一个INT警告 - 浮点运算? 我有一个旧的代码有许多算术运算和我注意到,有很多情况下这样的:激活INT的警告 - 在GCC

int a, b, c; 
double x, y, z; 
y = a + x*b + c/z; 

这是不容易的跟踪与我的IDE的“搜索”工具,所有这些情况下,因为代码是真的很长,神秘而复杂(前面的例子只是为了弄清楚问题)!所以,我在想,如果有一个“-Wsomenthing”在GCC可用,可以帮我这个苦差事。

加成

我没有收到任何警告与-Wconversion活跃

+0

你可以尝试-Wconversion MELT具体问题? – 2013-02-10 11:27:40

+1

我没有看到上述代码可能出现的任何问题 - 它将完全按照您的预期进行[假设a,b,c和x,z都已初始化]。你真的想要解决什么问题? – 2013-02-10 11:32:47

+0

@MatsPetersson我从这段代码中得到了一些不好的值,我正在代码中寻找问题。我检查了所有公式都写入代码(我知道代码背后的数学背景,所以我已经能够做到这一点)。我注意到,我描述了很多情况,所以我认为这可能是问题所在。 – 2013-02-10 11:40:45

回答

3

有可能是没有这样的方法,但你的问题是GCC的扩展或插件的规范情况。

您可以使用C编码的插件来扩展GCC(版本4.6或更高版本)。您可以更容易地使用MELT扩展GCC,这是扩展GCC的高级别领域特定语言。

GCC 4.5是可扩展的插件,但该插件的支持是差4.5,在4.6或4.7或好或即将发布的4.8

如果使用MELT,你可能想使用它的walk_gimple_seq_unique_tree然后将当前的疙瘩与gimple_assign_cast相匹配。

编写这样的熔体扩展可能需要您一天以上的时间;问题在于GCC很复杂,你需要部分理解它的内部表示(Gimple)及其通过机制。如果你有一个庞大的代码库,定制编译器仍然是值得的。

请教关于[email protected]

+0

也许搞叮当([LLVM](http://llvm.org))变得更容易?甚至[稀疏](https://sparse.wiki.kernel.org)? – vonbrand 2013-02-19 18:02:33

+0

我不确定。但你可以尝试..而且提到的问题明确* gcc * – 2013-02-19 19:25:13

+0

clang和稀疏显式非常兼容gcc。而且你需要你设置的任何工具来寻找可疑的代码...... – vonbrand 2013-02-19 19:27:30