[Bug testsuite/80416] FAIL: g++.dg/torture/pr79671.C -O2 execution test
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 13 10:57:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80416
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2017-04-13
Component|rtl-optimization |testsuite
Ever confirmed|0 |1
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
What DSE1 does is ok. After DSE1 we have
(insn 11 2 13 2 (set (mem/j/c:SI (reg/f:DI 328 sfp) [0 y+0 S4 A128])
(const_int 0 [0]))
"/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C":14
5 {movsi_internal}
(nil))
(insn 13 11 14 2 (set (reg:DI 347 [ q ])
(asm_operands/v:DI ("") ("=r") 0 [
(reg/f:DI 328 sfp)
]
[
(asm_input:DI ("r")
/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C:16)
]
[]
/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C:16))
"/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C":16
-1
(nil))
(insn 14 13 18 2 (set (reg:SI 341 [ <retval> ])
(mem:SI (reg:DI 347 [ q ]) [2 q_3->i+0 S4 A32]))
"/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C":17
5 {movsi_internal}
(expr_list:REG_DEAD (reg:DI 347 [ q ])
(nil)))
(insn 18 14 19 2 (set (reg/i:SI 8 r8)
(reg:SI 341 [ <retval> ]))
"/space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr79671.C":18
5 {movsi_internal}
(expr_list:REG_DEAD (reg:SI 341 [ <retval> ])
(nil)))
but RA breaks it. I think
asm volatile ("" : "=r" (q) : "r" (q));
in the testcase is bogus.
asm volatile ("" : "+r" (q) : "r" (q));
works. The idea of the asm is to do nothing but allocate both input and output
to the same register... I probably failed to express this.
More information about the Gcc-bugs
mailing list