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



             Bug #: 56837

           Summary: -ftree-loop-distribute-patterns generates incorrect

                    code

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: major

          Priority: P3

         Component: tree-optimization

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: pmblak...@googlemail.com





Created attachment 29801

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29801

Compilation output from adding -v -save-temps



With gcc-4.8.0 release, and up to and including gcc-4.8-20130328,

-ftree-loop-distribute-patterns can give incorrect results:



Minimal test-case (named OptBug-4.8.C):



extern int __builtin_printf (__const char *__restrict __format, ...);



int main(void)

{

  bool* b = new bool[5];

  for(unsigned int i=0 ; i < 5 ; i++)

  {

    b[i] = true;

  }



  for(unsigned int i=0 ; i < 5 ; i++)

  {

    __builtin_printf("%d\n", b[i]);

  }



  return 0;

}



Compilation command: g++-4.8-20130328 OptBug-4.8.C -o OptBug-4.8 -O1

-ftree-loop-distribute-patterns



Expected output:

1

1

1

1

1



Actual output:

255

255

255

255

255



The expected output is produced if the -ftree-loop-distribute-patterns flag is

removed.

The incorrect behaviour is not exhibited by gcc-4.7.2.

Reply via email to