This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
optimization/6443: internal compiler error, at flow.c:6458
- From: "Daniel R. Grayson" <drg at ncsa dot uiuc dot edu>
- To: gcc-gnats at gcc dot gnu dot org
- Date: Wed, 24 Apr 2002 20:27:47 -0500
- Subject: optimization/6443: internal compiler error, at flow.c:6458
- Reply-to: dan at math dot uiuc dot edu
>Number: 6443
>Category: optimization
>Synopsis: internal compiler error, at flow.c:6458
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Apr 24 18:36:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Daniel R. Grayson
>Release: 3.0.4
>Organization:
University of Illinois
>Environment:
System: Linux hn02 2.2.19smpx #2 SMP Wed Apr 25 20:33:05 PDT 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.0.4/./configure --prefix=/u/ac/drg/local --enable-shared --enable-threads=posix --enable-languages=c++,f77,java
>Description:
gcc -O3 -c bug.c
bug.c: In function `actors_circ_':
bug.c:276: Internal compiler error in print_rtl_and_abort, at flow.c:6458
>How-To-Repeat:
Run
gcc -O3 -c bug.c
where bug.c is the following file.
struct exception {
int type;
char *name;
double arg1;
double arg2;
double retval;
};
extern double pow (double __x, double __y) {
register long double __value = 0;
long long int __p = (long long int) __y;
if (__y == (double) __p) {
if (__p == 0) return 1.0;
if (__p < 0) __p = -__p;
}
return __value;
}
typedef void * object_;
typedef struct S153_ * arith_Integer;
typedef struct S177_ * arith_Rational;
typedef struct S224_ * tokens_SymbolHashTable;
typedef struct S226_ * tokens_Dictionary;
typedef struct S227_ * tokens_Scope;
typedef struct S252_ * TokenFile;
typedef struct S255_ * tokens_Real;
typedef struct S259_ * Sequence;
typedef struct S260_ * tokens_Frame;
typedef struct S261_ * tokens_FunctionClosure;
typedef struct S262_ * tokens_SymbolClosure;
typedef struct SC269_ Expr;
typedef struct SC290_ Code;
typedef struct S296_ * HashTable;
struct SC269_ {unsigned short type_; object_ ptr_;};
struct SC290_ {unsigned short type_; object_ ptr_;};
struct S177_ {arith_Integer numerator;arith_Integer denominator;};
struct S255_ {double v;};
extern Expr ab;
extern arith_Rational re;
extern arith_Integer arith_circ_circ_(arith_Integer,arith_Integer);
extern arith_Integer arith_or_(arith_Integer,arith_Integer);
extern arith_Integer arith_amp_(arith_Integer,arith_Integer);
extern double arith_circ__1(double,arith_Integer);
extern arith_Integer arith_circ_(arith_Integer,arith_Integer);
extern char arith_greater_equal__1(arith_Integer,int);
extern char arith_equal_equal_equal__1(arith_Integer,int);
extern arith_Integer arith_minus_(arith_Integer);
extern arith_Integer arith_plus_(arith_Integer,arith_Integer);
extern unsigned short arith_pct_(arith_Integer,unsigned short);
extern int arith_toInt(arith_Integer);
extern arith_Integer arith_toInteger(int);
extern tokens_SymbolClosure binding_PowerS;
Expr actors_circ_(Expr lhs_10,Expr rhs_12){
arith_Integer x_19;
arith_Integer y_40;
tokens_Real y_41;
arith_Rational x_20;
arith_Integer y_42;
tokens_Real x_21;
tokens_Real y_43;
arith_Integer y_44;
Expr tmp__212;
Expr tmp__217;
Expr tmp__219;
arith_Integer tmp__220;
Expr tmp__221;
Expr tmp__222;
arith_Integer tmp__223;
Expr tmp__224;
tokens_Real tmp__225;
Expr tmp__226;
arith_Rational tmp__227;
Expr tmp__228;
Expr tmp__229;
tokens_Real tmp__230;
Expr tmp__231;
tokens_Real tmp__232 = 0;
Expr tmp__233;
Expr tmp__234;
Expr tmp__235;
switch (lhs_10.type_) {
case 6:;
tmp__212 = lhs_10;
goto L749_;
case 13:;
x_19 = ((arith_Integer)lhs_10.ptr_);
switch (rhs_12.type_) {
case 13:;
y_40 = ((arith_Integer)rhs_12.ptr_);
if (arith_greater_equal__1(y_40, 0)) goto L787_;
if (arith_equal_equal_equal__1(x_19, 1)) goto L788_;
if (arith_equal_equal_equal__1(x_19, (- 1))) goto L789_;
goto L790_;
L789_:;
if ((((int)arith_pct_(y_40, ((unsigned short)2))) == 0)) goto L791_;
;
goto L792_;
L791_:;
tmp__220 = arith_toInteger(1);
tmp__219 = ((Expr){13,((object_)tmp__220)});
;
L792_:;
tmp__217 = tmp__219;
;
L790_:;
tmp__221 = tmp__217;
;
goto L793_;
L788_:;
tmp__221 = ((Expr){13,((object_)x_19)});
;
L793_:;
tmp__222 = tmp__221;
;
goto L794_;
L787_:;
tmp__223 = arith_circ_(x_19, y_40);
tmp__222 = ((Expr){13,((object_)tmp__223)});
;
L794_:;
tmp__224 = tmp__222;
;
goto L768_;
case 1:;
y_41 = ((tokens_Real)rhs_12.ptr_);
;
tmp__225 = 0;
tmp__225->v = pow(((double)arith_toInt(x_19)), y_41->v);
tmp__224 = ((Expr){1,((object_)tmp__225)});
;
goto L768_;
case 6:;
tmp__224 = rhs_12;
;
goto L768_;
case 2:;
case 3:;
case 4:;
case 5:;
case 7:;
case 8:;
case 9:;
case 10:;
case 11:;
case 12:;
case 14:;
case 15:;
case 16:;
case 17:;
case 18:;
tmp__226 = ab;
tmp__224 = tmp__226;
;
goto L768_;
L768_:;
}
tmp__212 = tmp__224;
;
goto L749_;
case 12:;
x_20 = ((arith_Rational)lhs_10.ptr_);
;
switch (rhs_12.type_) {
case 13:;
y_42 = ((arith_Integer)rhs_12.ptr_);
;
tmp__227 = re;
tmp__228 = ((Expr){12,((object_)tmp__227)});
;
goto L795_;
case 6:;
tmp__228 = rhs_12;
;
goto L795_;
case 1:;
case 2:;
case 3:;
case 4:;
case 5:;
case 7:;
case 8:;
case 9:;
case 10:;
case 11:;
case 12:;
case 14:;
case 15:;
case 16:;
case 17:;
case 18:;
tmp__229 = ab;
tmp__228 = tmp__229;
;
goto L795_;
L795_:;
}
tmp__212 = tmp__228;
;
goto L749_;
case 1:;
x_21 = ((tokens_Real)lhs_10.ptr_);
switch (rhs_12.type_) {
case 1:;
y_43 = ((tokens_Real)rhs_12.ptr_);
;
tmp__230 = 0;
tmp__230->v = pow(x_21->v, y_43->v);
tmp__231 = ((Expr){1,((object_)tmp__230)});
;
goto L814_;
case 13:;
y_44 = ((arith_Integer)rhs_12.ptr_);
;
tmp__232->v = arith_circ__1(x_21->v, y_44);
tmp__231 = ((Expr){1,((object_)tmp__232)});
;
goto L814_;
case 6:;
;
goto L814_;
case 2:;
case 3:;
case 4:;
case 5:;
case 7:;
case 8:;
case 9:;
case 10:;
case 11:;
case 12:;
case 14:;
case 15:;
case 16:;
case 17:;
case 18:;
tmp__233 = ab;
tmp__231 = tmp__233;
;
goto L814_;
L814_:;
}
tmp__212 = tmp__231;
;
goto L749_;
case 2:;
case 3:;
case 4:;
case 5:;
case 7:;
case 8:;
case 9:;
case 10:;
case 11:;
case 14:;
case 15:;
case 16:;
case 17:;
case 18:;
tmp__234 = ab;
;
goto L749_;
L749_:;
}
tmp__235 = tmp__212;
return tmp__235;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: