With revision r163997 this test passed.
>From revision r163998 and on, including at least r164242 this test has failed
as follows:

Running /tmp/reg_a4_998/gcc/gcc/testsuite/gfortran.dg/dg.exp ...
... (non-regressions elided)
FAIL: gfortran.dg/forall_4.f90  -O3 -g  execution test

With the message in the logfile being:

Executing on host: /tmp/reg_a4_998/gccobj/gcc/testsuite/gfortran/../../gfortran
-B/tmp/reg_a4_998/gccobj/gcc/testsuite/gfortran/../../
/tmp/reg_a4_998/gcc/gcc/testsuite/gfortran.dg/forall_4.f90   -O3 -g  
-pedantic-errors   -isystem
/tmp/reg_a4_998/gccobj/cris-elf/./newlib/targ-include -isystem
/tmp/reg_a4_998/gcc/newlib/libc/include
-B/tmp/reg_a4_998/gccobj/cris-elf/./libgloss/cris/
-L/tmp/reg_a4_998/gccobj/cris-elf/./libgloss/cris
-L/tmp/reg_a4_998/gcc/libgloss/cris 
-B/tmp/reg_a4_998/gccobj/cris-elf/./newlib/
-L/tmp/reg_a4_998/gccobj/cris-elf/./newlib -sim3 
-B/tmp/reg_a4_998/gccobj/cris-elf/./libgfortran/.libs
-L/tmp/reg_a4_998/gccobj/cris-elf/./libgfortran/.libs
-L/tmp/reg_a4_998/gccobj/cris-elf/./libiberty  -lm   -o ./forall_4.exe   
(timeout = 300)
PASS: gfortran.dg/forall_4.f90  -O3 -g  (test for excess errors)
program stopped with signal 6.
FAIL: gfortran.dg/forall_4.f90  -O3 -g  execution test

A shortened test-case is attached, in which the second call to abort is
executed.  Apparently the "-g" is critical.  There is the following
assembly-code difference without/with "-g".  Note the actual *code* difference
among the expected debug-label differences, in which the comparison-part of the
cstore is lost:
...
@@ -62,18 +103,24 @@ _main:
        cmpq 4,$r9
        bne .L16
        nop
+.LBE48:
+.LBE47:
+       .loc 1 32 0
        clear.d [$sp+32]
        clear.d [$sp+36]
        clear.d [$sp+40]
        clear.d [$sp+44]
-       move.b 1,$r13
-       cmp.d [$sp+16],$r13
+.LBB49:
+       .loc 1 33 0
        seq $r9
-       cmp.d [$sp+24],$r13
+       move.d [$sp+24],$r13
+       cmpq 1,$r13
        seq $r13
        lslq 16,$r13
        or.d $r13,$r9
        oR.d 16777472,$r9
+.LBE49:
+.LBB50:
        move.b $r9,$r9
        bne .L18
        nop
...

There is no such actual code difference with r163997.
N.B: CRIS is a cc0 target.

Author of patch for this revision CC:ed.


-- 
           Summary: [4.5 Regression]: gfortran.dg/forall_4.f90 -O3, wrong
                    code with -g
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hp at gcc dot gnu dot org
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: cris-axis-elf


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

Reply via email to