This causes an Ada bootstrap, ../../xgcc -B../../ -c -g -O2 -W -Wall -gnatpg 
s-fore.adb -o s-fore.o
The trees look like:
  natural___XDLU_0__2147483647 r;
  long_long_float t;

<bb 0>:
  t = MAX_EXPR <ABS_EXPR <lo>, ABS_EXPR <hi>>;
  if (t >= 1.0e+1 == 0) goto <L11>; else goto <L12>;

<L11>:;
  r = 2;
  goto <bb 2> (<L2>);

<L12>:;
  r = 2;

<L1>:;
  t = t / 1.0e+1;
  r = r + 1;
  if (t >= 1.0e+1 == 0) goto <L2>; else goto <L1>;

<L2>:;
  return r;
}
I cannot reproduce this with the C compiler as MAX_EXPR is not generated without 
-ffast-math.

The closest C code I could get is:
#include <math.h>

long double fabsl(long double);

long double Fore (long double lo, long double hi)
{
  long double r;
  long double t;
  long double t1;
  long double t2;
  int tt;

  //t = MAX_EXPR <ABS_EXPR <lo>,   <hi>>;
  t1 = fabsl(lo);
  t2 = fabsl(hi);
  t = t1 >= t2 ? t1 : t2;
  tt = (t >= 1.0e+1L);
  if (tt == 0) goto L12;

L11:;
  r = 2;
  goto L2;

L12:;
  r = 2;

L1:;
  t = t / 1.0e+1L;
  r = r + 1;
  tt = (t >= 1.0e+1L);
  if (tt == 0) goto L1;

L2:;
  return r;

}

-- 
           Summary: [4.0 Regression] ICE in rs6000_emit_minmax,
                    config/rs6000/rs6000.c:11725
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, build
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: powerpc-darwin


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

Reply via email to