This testcase will cause an internel error when compiled with options "-O3 -fprefetch-loop-arrays" on IA-64 + Linux. SUBROUTINE EBJFT() dimension nmw(140) if(k.eq.0) goto 10 go to 30 10 continue do 20 l=1, 140 20 nmw(l)= 0.0D0 30 continue go to (10)lsn do 40 j=1, 140 nmwj=nmw(j) 40 continue write(*,*) nmwj end The error message is: prefetch-err.f: In function ‘ebjft� prefetch-err.f:3: error: edge from 50 to 36 should be marked irreducible prefetch-err.f:3: internal compiler error: in verify_loop_structure, at cfgloop.c:1268 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Can you try the patch linked from PR 27735 to see if this fixes this bug also?
(In reply to comment #1) > Can you try the patch linked from PR 27735 to see if this fixes this bug also? No, this is unrelated (the ice here is from tree_unroll_loop, never gets to unswitching).
Patch: http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00284.html
Subject: Bug 27872 Author: rakdver Date: Thu Jun 8 08:19:50 2006 New Revision: 114482 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114482 Log: PR tree-optimization/27872 * tree-ssa-loop-manip.c (tree_unroll_loop): Set EDGE_IRREDUCIBLE_LOOP flag on the new exit edge of the unrolled loop. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-loop-manip.c
Fixed.