egcs-2.93.22 19990518 (i686-pc-linux-gnu): ICE in `fold_truthop', at fold-const.c:3813

Raja R Harinath harinath@cs.umn.edu
Tue May 18 14:22:00 GMT 1999


Hi,

The following simple program causes an internal compiler error:

  /* output1.c */
  typedef int   gboolean;

  typedef struct{
    gboolean names : 1;
    gboolean types : 1;
  } ParamOptions;

  int p_param(ParamOptions* o){
    return o->types && o->names;
  }

The compiler output is

  han ~/z/z > gcc -v
  Reading specs from /home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.93.22/specs
  gcc version egcs-2.93.22 19990518 (gcc2 ss-980929 experimental)
  han ~/z/z > gcc -O2 -c output1.c
  output1.c: In function `p_param':
  output1.c:9: Internal compiler error in `fold_truthop', at fold-const.c:3813
  Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
  See <URL: http://egcs.cygnus.com/faq.html#bugreport > for details.

The problem goes away if `int' is used directly instead of `gboolean'
(equiv. `#define gboolean int' instead of `typedef int gboolean;').

That part of the code appears to have been last modified by:

  1999-05-17  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
  [snip]
        * fold-const.c (fold_truthop): When converting a one-bit
        comparison don't sign extend the constant.

- Hari
-- 
Raja R Harinath ------------------------------ harinath@cs.umn.edu
"When all else fails, read the instructions."      -- Cahn's Axiom
"Our policy is, when in doubt, do the right thing."   -- Roy L Ash


More information about the Gcc-bugs mailing list