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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-12-16
     Ever confirmed|0                           |1

--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
RTL expand is correct:

;; _2 = bar (0, 0, 0, 0, 0); 

(insn 6 5 7 (parallel [
            (set (reg/f:DI 7 sp) 
                (plus:DI (reg/f:DI 7 sp) 
                    (const_int -16 [0xfffffffffffffff0])))
            (clobber (reg:CC 17 flags))
        ]) "x.i":17 -1
     (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
        (nil)))

(insn 7 6 8 (set (reg:DI 90) 
        (reg/f:DI 84 virtual-outgoing-args)) "x.i":17 -1
     (nil))

(insn 8 7 9 (set (reg:DI 91) 
        (const_int 0 [0])) "x.i":17 -1
     (nil))

(insn 9 8 10 (set (reg:DI 92) 
        (const_int 0 [0])) "x.i":17 -1
     (nil))

(insn 10 9 11 (set (mem:TI (reg:DI 90) [0  S16 A128])
        (const_int 0 [0])) "x.i":17 -1
     (nil))

But vregs generates:

(insn 5 2 6 2 (set (reg:DI 87 [ v.0_1 ])
        (mem/c:DI (symbol_ref:DI ("v") [flags 0x2]  <var_decl 0x7f520f0ddab0
v>) [1 v+0 S8 A64])) "x.i":17 85 {*movdi_internal}
     (nil))
(insn 6 5 7 2 (parallel [
            (set (reg/f:DI 7 sp)
                (plus:DI (reg/f:DI 7 sp)
                    (const_int -16 [0xfffffffffffffff0])))
            (clobber (reg:CC 17 flags))
        ]) "x.i":17 222 {*adddi_1}
     (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
        (nil)))
(insn 7 6 8 2 (set (reg:DI 90)
        (reg/f:DI 7 sp)) "x.i":17 85 {*movdi_internal}
     (nil))
(insn 8 7 9 2 (set (reg:DI 91)
        (const_int 0 [0])) "x.i":17 85 {*movdi_internal}
     (nil))
(insn 9 8 10 2 (set (reg:DI 92)
        (const_int 0 [0])) "x.i":17 85 {*movdi_internal}
     (nil))
(insn 10 9 11 2 (set (mem:TI (reg:DI 90) [0  S16 A128]) <<<< The alignment is
wrong.
        (const_int 0 [0])) "x.i":17 84 {*movti_internal}
     (nil))

Reply via email to