[Bug middle-end/82636] powerpc: Unnecessary copy of __ieee128 parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82636 --- Comment #5 from Michael Meissner --- Created attachment 42425 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42425=edit Post reload dump file
[Bug middle-end/82636] powerpc: Unnecessary copy of __ieee128 parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82636 --- Comment #4 from Michael Meissner --- Created attachment 42424 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42424=edit Reload dump file
[Bug middle-end/82636] powerpc: Unnecessary copy of __ieee128 parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82636 --- Comment #3 from Michael Meissner --- Created attachment 42423 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42423=edit LRA dump file
[Bug middle-end/82636] powerpc: Unnecessary copy of __ieee128 parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82636 --- Comment #2 from Michael Meissner --- Created attachment 42422 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42422=edit Simpler test case that does not use asm
[Bug middle-end/82636] powerpc: Unnecessary copy of __ieee128 parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82636 --- Comment #1 from Michael Meissner --- This looks like a reload bug. I see the same thing with automatically generated fmas: --> cat foo06c.c __ieee128 __fmaf128_power9 (__ieee128 x, __ieee128 y, __ieee128 z) { return (x * y) + z; } After the LRA pass, the rtl dump is: (insn 13 8 14 2 (set (reg/i:KF 79 2) (fma:KF (reg:KF 79 2 [ x ]) (reg:KF 80 3 [ y ]) (reg:KF 81 4 [ z ]))) "foo06c.c":5 873 {fmakf4_hw} (expr_list:REG_DEAD (reg:KF 81 4 [ z ]) (expr_list:REG_DEAD (reg:KF 80 3 [ y ]) (nil (insn 14 13 16 2 (use (reg/i:KF 79 2)) "foo06c.c":5 -1 (nil)) However, reload inserts moves: (insn 18 8 13 2 (set (reg:KF 77 0 [orig:126 z ] [126]) (reg:KF 81 4 [ z ])) "foo06c.c":5 1009 {*vsx_movkf_64bit} (nil)) (insn 13 18 19 2 (set (reg:KF 77 0 [orig:126 z ] [126]) (fma:KF (reg:KF 79 2 [ x ]) (reg:KF 80 3 [ y ]) (reg:KF 77 0 [orig:126 z ] [126]))) "foo06c.c":5 873 {fmakf4_hw} (nil)) (insn 19 13 14 2 (set (reg/i:KF 79 2) (reg:KF 77 0 [orig:126 z ] [126])) "foo06c.c":5 1009 {*vsx_movkf_64bit} (nil)) (insn 14 19 16 2 (use (reg/i:KF 79 2)) "foo06c.c":5 -1 (nil))