GCC优化-O1暴露未初始化错误

GCC优化-O1暴露未初始化错误,gcc,compiler-construction,compiler-optimization,Gcc,Compiler Construction,Compiler Optimization,我使用gcc(4.4.6版)和-O3优化级别与-Wall。如果使用-O1优化级别和-Wall编译相同的代码,我会看到几个新的未初始化警告。 代码存在由-O1而不是-O3报告的问题。理想情况下,人们希望在更高的优化级别上看到更多的警告和更严格的检查 这是预期的还是我遇到了gcc问题 提前谢谢 下面是代码的一部分 int vrc_phy_locate() phys_instance pinstance; : select = SelectFlag(); if (select == SELECTE

我使用gcc(4.4.6版)和-O3优化级别与-Wall。如果使用-O1优化级别和-Wall编译相同的代码,我会看到几个新的未初始化警告。 代码存在由-O1而不是-O3报告的问题。理想情况下,人们希望在更高的优化级别上看到更多的警告和更严格的检查

这是预期的还是我遇到了gcc问题

提前谢谢

下面是代码的一部分

int vrc_phy_locate()
phys_instance pinstance;
:
 select = SelectFlag();
 if (select == SELECTED) {
    pinstance = vrc_phy_locate_pinstance(canvas, x, y);
    if (pinstance) {
:
: 
    }
 }

select = SelectFlag();
if (select == SELECTED) {
    blackbox = vrc_phy_locate_blackbox();
    if (pinstance) {
        vrcPhySelectBlackbox();
:
:

 Following warning is seen on compiling with -O1
 canvas_util.c: In function 'int vrc_phy_locate(vbgCanvas*, int, int)':
  canvas_util.c:1223: warning: 'pinstance' may be used uninitialized in this function

gcc有时会在更高的优化级别上打印更多的警告,因为编译器会对代码执行更彻底的分析,但不希望出现相反的结果。你能给出一个产生这种行为的程序的最小示例吗?我已经添加了相同的示例。感谢这不是一个产生行为的程序的最小示例,而是整个程序的一个片段。区别在于前者可以独立编译。