https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112598

--- Comment #9 from Li Pan <pan2.li at intel dot com> ---
Before tracer
------------------------------------------------------------- 
                        ENTRY
                           |
                       +-------+
                       |  B2   |
                       +-------+
                      /         \
                    a < 2        a >= 2
                    /              \ 
               +-----------+      +-----------+
               | vec store |----->| _3 = b[1] |
               +-----------+      +-----------+
                                  /            \
                                _3 != 1         _3 == 1
                                /                \
                            +--------+        +----------+
                            | abort  |        | return 0 |
                            +--------+        +----------+
After tracer
------------------------------------------------------------- 

                        ENTRY
                           |
                       +-------+
                       |  B2   |
                       +-------+
                      /         \
                    a < 2        a >= 2
                    /              \ 
            +-------------+      +-----------+
            | vec store   |      | _3 = b[1] |
            |             |      +-----------+
after tracer|             |       /            \
            |             |    _3 != 1         _3 == 1
            | _31 = b[1]  |     /                \
            +-------------+ +--------+        +----------+
                    |------>| abort  |        | return 0 |<---|
                    |       +--------+        +----------+    |
                    |                                         |
                    |-----------------------------------------|

After tracer, the vec store and scalar load will be in the same basic block and
unfortunately referenced to the same memory address. Thus, the sch1 make the
scalar load before vec store cause the failure on memory access sequeneces.

Reply via email to