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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-07-07
          Component|c++                         |rtl-optimization
     Ever confirmed|0                           |1
      Known to fail|                            |5.4.0, 6.1.0

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
As y is not used stores to it are eliminated in main().  I can confirm that
RTL optimizers somehow remove the volatile load from x from the inline copy
of g() which is because RTL expansion expands x as register copy for some
reason.

;; x.11_3 ={v} x;

(insn 19 18 0 (set (reg:QI 87 [ x.11_3 ])
        (mem/v/c:QI (plus:DI (reg/f:DI 82 virtual-stack-vars)
                (const_int -2 [0xfffffffffffffffe])) [0 x+0 S1 A16])) t.C:36 -1
     (nil))

;; x ={v} x.11_3;

(insn 20 19 0 (set (reg/v:QI 94 [ x ])
        (reg:QI 87 [ x.11_3 ])) -1
     (nil))

;; Generating RTL for gimple basic block 5

;; x.7_10 ={v} x;

(insn 22 21 0 (set (reg:QI 90 [ x.7_10 ])
        (reg/v:QI 94 [ x ])) t.C:18 -1
     (nil))

;; ivtmp_36 = ivtmp_22 + 18446744073709551615;

(insn 23 22 0 (parallel [
            (set (reg:DI 92 [ ivtmp_22 ])
                (plus:DI (reg:DI 92 [ ivtmp_22 ])
                    (const_int -1 [0xffffffffffffffff])))
            (clobber (reg:CC 17 flags))
        ]) -1
     (nil))

Reply via email to