0

int --float操作がある場合に常に警告をgccでアクティブ化する方法はありますか?多くの算術演算を含む古いコードがあり、そのような状況がたくさんあることに気づきました。

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

私のアイデアの「検索」ツールを使用してこれらすべての状況を追跡するのは簡単ではありません。コードは非常に長く、不可解で複雑です(前の例は問題を理解するために与えられたものです)。それで、私はこの苦痛を私に助けることができるgccで利用可能な「-Wsomenthing」があるかどうか疑問に思いました。

添加

-Wconversionがアクティブな状態で警告が表示されない

4

1 に答える 1

3

おそらくそのような方法はありませんが、あなたの問題はGCC拡張機能またはプラグインの標準的なケースです。

Cで苦労してコーディングされたプラグインを使用してGCC(バージョン4.6以降)を拡張できます。GCCを拡張するための高レベルのドメイン固有言語であるMELTを使用すると、GCCをより簡単に拡張できます。

GCC 4.5はプラグインで拡張可能ですが、プラグインのサポートは4.5では不十分であり、4.6または4.7、あるいはまもなくリリースされる4.8ではより良くなります。

MELTを使用する場合は、おそらくそれを使用してからwalk_gimple_seq_unique_tree、現在のgimpleを。と一致させgimple_assign_castます。

このようなMELT拡張機能を作成するには、1日以上かかる場合があります。問題は、GCCが複雑であり、その内部表現(Gimple)とそのパス機構を部分的に理解する必要があるということです。大規模なコードベースがある場合でも、コンパイラをカスタマイズすることは、努力する価値があります。

gcc-melt@googlegroups.comでMELT固有の質問をする

于 2013-02-10T11:25:58.573 に答える