http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50291

             Bug #: 50291
           Summary: A bug of if-condition optimization in x32
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: yahem...@gmail.com


Created attachment 25191
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25191
c example code

Hi,

I use the x32 compiler and encounter a optimization issue.

Attachments are the example code and the results.

Gcc compiler version : 4.7.0 20110817

OS and development environment : gcc version 4.5.2 under Mingw (32-bit), xp sp3 

Command : x86_64-unknown-elf-gcc -mx32 -O2 example.c -S

In the example, if we don't comment the line of Fb(...) or Ff(...), we can find
out that compiler skip the result of if-condition in the example.c :

    if( cca == 0 && ccb == 0)
     {
          DataBlkPreAllocated = 1;
     }

Because the cca and ccb may be changed by other function, this result is wrong.

If we add the "–fno-if-conversion" option, the compiler wouldn't skip this
if-condition.

But using "–fno-if-conversion" may generate more jump instructions in large
code. 

So I guess this problem may be relative to the "–fif-conversion" optimization. 

best regards,

Reply via email to