http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45865
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2010-10-06 01:11:30 UTC --- A simple testcase: [...@gnu-32 rrs]$ cat pr45865.c typedef struct rtx_def *rtx; enum machine_mode { VOIDmode, CCFPmode, CCFPUmode, MAX_MACHINE_MODE }; enum mode_class { MODE_CC, MODE_FLOAT, MODE_COMPLEX_FLOAT, MODE_VECTOR_FLOAT }; extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE]; enum rtx_code { UNKNOWN, GEU, ORDERED, CONST_INT }; struct rtx_def { unsigned int code: 16; unsigned int mode : 8; }; extern enum rtx_code reverse_condition (enum rtx_code); enum rtx_code reversed_comparison_code_parts (enum rtx_code code, rtx insn, rtx arg0, rtx arg1) { enum machine_mode mode; mode = (enum machine_mode) (arg0)->mode; if (mode == VOIDmode) mode = (enum machine_mode) (arg1)->mode; if ((mode_class[(int) (mode)]) == MODE_CC) return (mode != CCFPmode && mode != CCFPUmode ? reverse_condition (code) : reverse_condition_maybe_unordered (code)); switch (code) { case GEU: return reverse_condition (code); case ORDERED: return UNKNOWN; } if (((enum rtx_code) (arg0)->code) == CONST_INT || (((enum machine_mode) (arg0)->mode) != VOIDmode && ! ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT))) return reverse_condition (code); return UNKNOWN; } [...@gnu-32 rrs]$ /export/gnu/import/rrs/164914/usr/bin/gcc -O2 -S -m32 pr45865.c pr45865.c: In function \u2018reversed_comparison_code_parts\u2019: pr45865.c:52:1: internal compiler error: in dwarf2out_cfi_begin_epilogue, at dwarf2out.c:2930 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. [...@gnu-32 rrs]$