http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51356
Bug #: 51356 Summary: [4.7 Regression] FAIL: gfortran.dg/anyallcount_1.f90 -O3 (internal compiler error) on powerpc-apple-darwin9 with -m32 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: domi...@lps.ens.fr CC: ia...@gcc.gnu.org, i...@gcc.gnu.org, ja...@gcc.gnu.org Host: powerpc-apple-darwin9 Target: powerpc-apple-darwin9 Build: powerpc-apple-darwin9 Between revisions 181105 (OK) and 181301, the following tests have started to fail on powerpc-apple-darwin9 with -m32: FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer (test for excess errors) WARNING: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) WARNING: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) WARNING: gfortran.dg/anyallcount_1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/anyallcount_1.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/anyallcount_1.f90 -O3 -g (test for excess errors) WARNING: gfortran.dg/anyallcount_1.f90 -O3 -g compilation failed to produce executable This can be reproduced with '-O2 -ftree-vectorize' on the following reduced test: program main implicit none character(len=*), parameter :: f='(3L1)' character(len=*), parameter :: g='(3I1)' real, dimension(3,3) :: a logical(kind=8), dimension(3,3) :: m8 character(len=3) :: res data a /-1.0, -2.0, -3.0, 2.0, 1.0, -2.1, 1.0, 2.0, 3.0 / m8 = a > 0 write (unit=res,fmt=f) any(m8,dim=1) if (res /= 'FTT') call abort write (unit=res,fmt=f) any(m8,dim=2) if (res /= 'TTT') call abort write (unit=res,fmt=f) all(m8,dim=1) if (res /= 'FFT') call abort write (unit=res,fmt=f) all(m8,dim=2) if (res /= 'FFF') call abort write (unit=res,fmt=g) count(m8,dim=1) if (res /= '023') call abort write (unit=res,fmt=g) count(m8,dim=2) if (res /= '221') call abort end program main [karma] /Users/dominiq% gfc -O2 -ftree-vectorize anyallcount_1_red.f90 anyallcount_1_red.f90: In function 'MAIN__': anyallcount_1_red.f90:2:0: internal compiler error: Bus error The backtrace I get is Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x0000000c 0x0085eaac in vect_analyze_data_refs_alignment (loop_vinfo=<value temporarily unavailable, due to optimizations>, bb_vinfo=0x0) at tree-vectorizer.h:333 333 && (loop->inner == (gimple_bb (stmt))->loop_father)); (gdb) bt #0 0x0085eaac in vect_analyze_data_refs_alignment (loop_vinfo=<value temporarily unavailable, due to optimizations>, bb_vinfo=0x0) at tree-vectorizer.h:333 #1 0x0085ea68 in vect_analyze_data_refs_alignment (loop_vinfo=<value temporarily unavailable, due to optimizations>, bb_vinfo=0x0) at ../../work/gcc/tree-vect-data-refs.c:806 The 'Bus error' is triggered by any of the WRITE statements.