This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/58069] New: ICE in tree_ssa_unswitch_loops at -O3 in 32 bit mode


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

            Bug ID: 58069
           Summary: ICE in tree_ssa_unswitch_loops at -O3 in 32 bit mode
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: su at cs dot ucdavis.edu

The following code causes an ICE when compiled with the current gcc trunk at
-O3 on x86_64-linux in 32-bit mode only. This is a regression from 4.8.x.

It may be related to 58018, which also manifests in 64-bit mode though. 

This testcase is also a lot more complex than the one for 58018; I wasn't able
to reduce it further. 


$ gcc-trunk -v
gcc version 4.9.0 20130801 (experimental) [trunk revision 201397] (GCC) 
$ gcc-trunk -m64 -O3 reduced.c
/tmp/ccHrLaas.o: In function `main':
reduced.c:(.text.startup+0x7): undefined reference to `fn2'
reduced.c:(.text.startup+0x18): undefined reference to `fn3'
reduced.c:(.text.startup+0x54): undefined reference to `fn7'
reduced.c:(.text.startup+0x76): undefined reference to `fn4'
reduced.c:(.text.startup+0x87): undefined reference to `fn6'
reduced.c:(.text.startup+0x96): undefined reference to `fn5'
collect2: error: ld returned 1 exit status
$ gcc-trunk -m32 -O2 reduced.c
/tmp/cc6hsIbp.o: In function `main':
reduced.c:(.text.startup+0x55): undefined reference to `fn2'
reduced.c:(.text.startup+0x72): undefined reference to `fn4'
reduced.c:(.text.startup+0xfe): undefined reference to `fn7'
reduced.c:(.text.startup+0x117): undefined reference to `fn3'
reduced.c:(.text.startup+0x127): undefined reference to `fn6'
reduced.c:(.text.startup+0x137): undefined reference to `fn5'
collect2: error: ld returned 1 exit status
$ gcc-4.8 -m32 -O3 reduced.c
/tmp/ccCehBNw.o: In function `main':
reduced.c:(.text.startup+0xa): undefined reference to `fn2'
reduced.c:(.text.startup+0x18): undefined reference to `fn3'
reduced.c:(.text.startup+0x52): undefined reference to `fn7'
reduced.c:(.text.startup+0x6f): undefined reference to `fn4'
reduced.c:(.text.startup+0x7e): undefined reference to `fn6'
reduced.c:(.text.startup+0x8e): undefined reference to `fn5'
collect2: error: ld returned 1 exit status
$ gcc-trunk -m32 -O3 reduced.c
reduced.c: In function âmainâ:
reduced.c:43:5: internal compiler error: Segmentation fault
 int main ()
     ^
0x7d52ef crash_signal
    ../../gcc-trunk/gcc/toplev.c:334
0x7fd37b ssa_default_def(function*, tree_node*)
    ../../gcc-trunk/gcc/tree-dfa.c:314
0x7fd640 get_or_create_ssa_default_def(function*, tree_node*)
    ../../gcc-trunk/gcc/tree-dfa.c:362
0x8168ea get_reaching_def
    ../../gcc-trunk/gcc/tree-into-ssa.c:1184
0x81ca5a maybe_replace_use
    ../../gcc-trunk/gcc/tree-into-ssa.c:1784
0x81ca5a rewrite_update_stmt
    ../../gcc-trunk/gcc/tree-into-ssa.c:1967
0x81ca5a rewrite_update_enter_block
    ../../gcc-trunk/gcc/tree-into-ssa.c:2136
0xb3716a walk_dominator_tree(dom_walk_data*, basic_block_def*)
    ../../gcc-trunk/gcc/domwalk.c:210
0x8155f3 rewrite_blocks
    ../../gcc-trunk/gcc/tree-into-ssa.c:2216
0x81bd0e update_ssa(unsigned int)
    ../../gcc-trunk/gcc/tree-into-ssa.c:3303
0xb9e4da tree_unswitch_single_loop
    ../../gcc-trunk/gcc/tree-ssa-loop-unswitch.c:358
0xb9eac8 tree_ssa_unswitch_loops()
    ../../gcc-trunk/gcc/tree-ssa-loop-unswitch.c:116
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
$ 



---------------------------------------


int a, b, c, e, p;
static int *d = &c;

static int foo (int p)
{
  int f, i, j = 0, *g = &a; 
  int h[] = { 0, 0, 0, 1, 0, 0, 0, 0, 1 };
  for (i = 0; i < 1; i++)
    {
      int *k = &b;
      {
    int **l = 0;
    int ***m = &l;
    int ****n = &m;
    j || fn2 ();
    *n = 0;
    if (*g)
      fn3 ();
    else
      {
        *k = 0;
        fn4 ();
      }
      }
      *g = *k;

      for (j = 8; j >= 0; j--)
        {
      for (f = 3; f <= 8; f++)
        *d |= h[f] && *k;
      if (e)
            {
          fn5 (fn6 () && 1);
          return 0;
            }
      int *o = &h[7];
      *d = -1L <= ((*o ^= *k) && f);
        }
      fn7 (p <= (a & 5UL));
    }
}

int main ()
{
  p = foo (1);
  return 0;
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]