[LLVMbugs] [Bug 10409] New: -O0 not turn off all "optimizations"

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jul 19 09:49:14 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=10409

           Summary: -O0 not turn off all "optimizations"
           Product: new-bugs
           Version: 2.8
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: tydeman at tybor.com
                CC: llvmbugs at cs.uiuc.edu


It appears, that even with -O0, some "optimizations" are being done. 
These optimizations change the semantics (meaning) of the code and
do the wrong thing.  One such item is constant folding.

#include <fenv.h>
#include <stdio.h>
#pragma STDC FENV_ACCESS ON

int main(void){
  double x;
  int i;

  feclearexcept(FE_ALL_EXCEPT);

  x = 1.0;
  x /= 3.0;  /* should raise inexact; 
                value computed depends upon rounding direction */

  i = fetestexcept(FE_ALL_EXCEPT);
  if( FE_INEXACT != i ){
    printf("missing inexact (got %i), x=%g\n", i, x);
  }
  return 0;
]

If I add 'volatile' to the declaration of x, then the code works.
The same kind of problem happens for:
  x=1.0; x /= 0.0;  /* divide by zero */
  x=0.0; x /= 0.0;  /* invalid */
  x=DBL_MAX; x *= DBL_MAX;  /* overflow */
  x=DBL_MIN; x *= DBL_MIN;  /* underflow */

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list