This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/49721] convert_memory_address_addr_space may generate invalid new insns
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 18 Aug 2011 21:56:43 +0000
- Subject: [Bug middle-end/49721] convert_memory_address_addr_space may generate invalid new insns
- Auto-submitted: auto-generated
- References: <bug-49721-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721
--- Comment #25 from H.J. Lu <hjl.tools at gmail dot com> 2011-08-18 21:56:43 UTC ---
Another testcase:
[hjl@gnu-6 pr49721]$ cat foo.f
PARAMETER( LM=7 )
PARAMETER( NM=2+2**LM, NV=NM**3 )
PARAMETER( NR = (8*(NM**3+NM**2+5*NM-23+7*LM))/7 )
COMMON /X/ U, V, R, A
REAL*8 U(NR),V(NV),R(NR),A(0:3)
DO 20 IT=1,NIT
CALL RESID(U,V,R,N,A)
20 CONTINUE
END
[hjl@gnu-6 pr49721]$
"-mx32 -O2 -ffast-math" may pass:
(plus:SI (symbol_ref:SI ("x_") <var_decl 0x7ffff188b1e0 x>)
(const_int 58071104 [0x3761840]))
to
convert_memory_address_addr_space
#2 0x000000000078c0d1 in convert_memory_address_addr_space (to_mode=DImode,
x=0x7ffff1971a10, as=0 '\000')
at /export/gnu/import/git/gcc-x32/gcc/explow.c:380
#3 0x0000000000b06f58 in simplify_unary_operation_1 (code=ZERO_EXTEND,
mode=DImode, op=0x7ffff1971a10)
at /export/gnu/import/git/gcc-x32/gcc/simplify-rtx.c:1246
#4 0x0000000000b04cb1 in simplify_unary_operation (code=ZERO_EXTEND,
mode=DImode, op=0x7ffff1971a10, op_mode=SImode)
at /export/gnu/import/git/gcc-x32/gcc/simplify-rtx.c:582
#5 0x000000000118b977 in fold_rtx (x=0x7ffff1971a20, insn=0x7ffff1886ee8)
at /export/gnu/import/git/gcc-x32/gcc/cse.c:3353
#6 0x000000000118e51f in cse_insn (insn=0x7ffff1886ee8)
at /export/gnu/import/git/gcc-x32/gcc/cse.c:4500
#7 0x000000000119387e in cse_extended_basic_block (ebb_data=0x7fffffffdad0)
at /export/gnu/import/git/gcc-x32/gcc/cse.c:6345
#8 0x0000000001193e5f in cse_main (f=0x7ffff1881b40, nregs=80)
at /export/gnu/import/git/gcc-x32/gcc/cse.c:6522
#9 0x0000000001195999 in rest_of_handle_cse ()
If we don't permute, we will get
Program received signal SIGSEGV, Segmentation fault.
0x0000000000622263 in init_alias_analysis ()
at /export/gnu/import/git/gcc-x32/gcc/alias.c:2870
2870 else if (DF_REG_DEF_COUNT (regno) == 1
(gdb) bt
#0 0x0000000000622263 in init_alias_analysis ()
at /export/gnu/import/git/gcc-x32/gcc/alias.c:2870
#1 0x00000000008d07bc in one_pre_gcse_pass ()
at /export/gnu/import/git/gcc-x32/gcc/gcse.c:2650
#2 0x00000000008d2aa5 in execute_rtl_pre ()
at /export/gnu/import/git/gcc-x32/gcc/gcse.c:3727
#3 0x0000000000a47514 in execute_one_pass (pass=0x191ea60)
at /export/gnu/import/git/gcc-x32/gcc/passes.c:2063
#4 0x0000000000a476fa in execute_pass_list (pass=0x191ea60)
at /export/gnu/import/git/gcc-x32/gcc/passes.c:2118
#5 0x0000000000a4771b in execute_pass_list (pass=0x191f4a0)
at /export/gnu/import/git/gcc-x32/gcc/passes.c:2119
#6 0x0000000000be1331 in tree_rest_of_compilation (fndecl=0x7ffff197b700)
at /export/gnu/import/git/gcc-x32/gcc/tree-optimize.c:420
#7 0x00000000006d69ce in cgraph_expand_function (node=0x7ffff1888a20)
at /export/gnu/import/git/gcc-x32/gcc/cgraphunit.c:1797
#8 0x00000000006d6b8d in cgraph_expand_all_functions ()
at /export/gnu/import/git/gcc-x32/gcc/cgraphunit.c:1856
#9 0x00000000006d7289 in cgraph_optimize ()
at /export/gnu/import/git/gcc-x32/gcc/cgraphunit.c:2126
#10 0x00000000006d4755 in cgraph_finalize_compilation_unit ()
at /export/gnu/import/git/gcc-x32/gcc/cgraphunit.c:1310
#11 0x00000000009d2e84 in write_global_declarations ()
...