https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63156
Bug ID: 63156 Summary: web can't handle AUTOINC correctly Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: carrot at google dot com Check out the latest trunk, apply the following patch to move web before IRA Index: passes.def =================================================================== --- passes.def (revision 214881) +++ passes.def (working copy) @@ -364,7 +364,6 @@ NEXT_PASS (pass_rtl_loop_done); TERMINATE_PASS_LIST () POP_INSERT_PASSES () - NEXT_PASS (pass_web); NEXT_PASS (pass_rtl_cprop); NEXT_PASS (pass_cse2); NEXT_PASS (pass_rtl_dse1); @@ -385,6 +384,7 @@ NEXT_PASS (pass_sms); NEXT_PASS (pass_live_range_shrinkage); NEXT_PASS (pass_sched); + NEXT_PASS (pass_web); NEXT_PASS (pass_ira); NEXT_PASS (pass_reload); NEXT_PASS (pass_postreload); Build an arm gcc, run following test make check-gcc RUNTESTFLAGS="--target_board=arm-sim/arch=armv5te/thumb execute.exp=20000422-1.c" You can see all tests pass. But if I enable the web pass, make check-gcc RUNTESTFLAGS="--target_board=arm-sim/arch=armv5te/thumb/-fweb execute.exp=20000422-1.c" I got one run time failure. The problem is web renamed the operand of post_inc in following insn, which should not occurred. (insn 34 122 36 2 (set (reg:SI 137 [ D.4191 ]) (mem/c:SI (post_inc:SI (reg/f:SI 156)) [2 num+0 S4 A32])) /usr/local/google/home/carrot/ssd/trunk3/gcc/testsuite/gcc.c-torture/execute/20000422-1.c:17 740 {*thumb1_movsi_insn} (expr_list:REG_INC (reg/f:SI 156) (expr_list:REG_EQUAL (mem/c:SI (symbol_ref:SI ("*.LANCHOR0") [flags 0x182]) [2 num+0 S4 A32]) (nil))))