public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/55531] New: peephole2 pattern with multiple insns with match_parallel insn causes corrupted peephole2_insns matching function
@ 2012-11-29 17:14 amylaar at gcc dot gnu.org
  0 siblings, 0 replies; only message in thread
From: amylaar at gcc dot gnu.org @ 2012-11-29 17:14 UTC (permalink / raw)
  To: gcc-bugs


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

             Bug #: 55531
           Summary: peephole2 pattern with multiple insns with
                    match_parallel insn causes corrupted peephole2_insns
                    matching function
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: amylaar@gcc.gnu.org


Created attachment 28828
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28828
Preprocessed compatibility-atomic-c++0x.cc sources

with epiphany.md updated to r193918, libstdc++-v3 cannot be built:

[amylaar@rowan gcc]$ gdb --args  ./cc1plus -fpreprocessed
compatibility-atomic-c++0x.ii -quiet -dumpbase compatibility-atomic-c++0x.cc
-auxbase-strip compatibility-atomic-c++0x.o -g -O2 -Wall -Wextra
-Wwrite-strings -Wcast-qual -Wabi -std=gnu++11 -version -fno-implicit-templates
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=compatibility-atomic-c++0x.lo -ffixed-r40 -ffixed-r41 -ffixed-r42
-ffixed-r43 -o compatibility-atomic-c++0x.s
GNU gdb (GDB) Fedora (7.4.50.20120120-52.fc17)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /ssd/fsf/bld-epiphany/gcc/cc1plus...done.
Breakpoint 1 at 0x8a496f0: file ../../gcc/gcc/diagnostic.c, line 1145.
Breakpoint 2 at 0x8a4a7b0: file ../../gcc/gcc/diagnostic.c, line 1086.
Breakpoint 3 at 0x80d5d60
Breakpoint 4 at 0x80d6000
File ../../gcc/gcc/tree.h will be skipped when stepping.
(gdb) run
Starting program: /ssd/fsf/bld-epiphany/gcc/cc1plus -fpreprocessed
compatibility-atomic-c++0x.ii -quiet -dumpbase compatibility-atomic-c++0x.cc
-auxbase-strip compatibility-atomic-c++0x.o -g -O2 -Wall -Wextra
-Wwrite-strings -Wcast-qual -Wabi -std=gnu++11 -version -fno-implicit-templates
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=compatibility-atomic-c++0x.lo -ffixed-r40 -ffixed-r41 -ffixed-r42
-ffixed-r43 -o compatibility-atomic-c++0x.s
GNU C++ (GCC) version 4.8.0 20121129 (experimental) (epiphany-elf)
        compiled by GNU C version 4.8.0 20121026 (experimental), GMP version
5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C++ (GCC) version 4.8.0 20121129 (experimental) (epiphany-elf)
        compiled by GNU C version 4.8.0 20121026 (experimental), GMP version
5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 491116e46d28e8306598e4f5150354ea

Program received signal SIGSEGV, Segmentation fault.
0x08958647 in peephole2_insns (x0=0xb6efdab0, insn=0xb6c187bc,
_pmatch_len=0xbfffe908) at ../../gcc/gcc/config/epiphany/epiphany.md:566
566                       (match_operand:SI 2 "arith_operand" "rL")))
(gdb) call debug_rtx(x0)
(parallel [
        (asm_operands/v ("") ("") 0 []
             []
             [] (null):0)
        (clobber (mem:BLK (scratch) [0 A8]))
    ])
(gdb) call debug_rtx(x1)
(return)

The line allegedly from epiphany.md:566 is actually this line in insn-recog.c:
  if (XVECLEN (x1, 0) >= 2
from the code generated for the peephole pattern in lines 1028..1034
of epiphany.md.

Here is a bit more context:

 L1407: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 0);
  operands[6] = x1;
  goto L1408;

 L1408: ATTRIBUTE_UNUSED_LABEL
  tem = peep2_next_insn (1);
  x1 = PATTERN (tem);
  if (XVECLEN (x1, 0) >= 2
      && float_operation (x1, VOIDmode))
    {
      operands[3] = x1;
      goto L1409;
    }
  goto L1540;

Note that XVECLEN (x1, 0) >= 2 is evaluated without checking first that
x1 is a PARALLEL.

I have attached preprocessed compatibility-atomic-c++0x.cc so that you merely
need cc1plus to reproducei the problem.

I have used the configure options
--target=epiphany-elf --enable-languages=c,c++ --enable-werror-always
and the Makefile target 'all-gcc'


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-11-29 17:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-29 17:14 [Bug rtl-optimization/55531] New: peephole2 pattern with multiple insns with match_parallel insn causes corrupted peephole2_insns matching function amylaar at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).