------- Additional Comments From pinskia at gcc dot gnu dot org 2005-01-30 05:25 ------- Confirmed (sorry about that I was thinking of something different at the time). Here is a better example for normal targets (PPC and x86 too): extern void foo6(int); void testloop6 (void) { int i; i = 100; do { foo6 ( i); i-=10; } while (i != 0); }
The tree dump for the loop on x86: <L0>:; foo6 (i); D.1592 = (unsigned int) i + 0fffffff6; i = (int) D.1592; if (D.1592 != 0) goto <L0>; else goto <L1>; Note this is not IV-OPTS messing up but DOM changing the if statement. -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1 GCC target triplet|avr | Last reconfirmed|0000-00-00 00:00:00 |2005-01-30 05:25:46 date| | Summary|Poor optimisation of loop |[4.0 Regression] Poor |test |optimisation of loop test, | |DOM causing unsigned to int | |and missing combine compares Target Milestone|--- |4.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19703