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))))

Reply via email to