https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
--- Comment #7 from Alan Modra ---
find_call_crossed_cheap_reg is certainly confusing. On looking at it again
this morning, I can't see why it uses reg_overlap_mentioned_p to break out of
the loop. Who cares if the reg is referenced (except aut
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
--- Comment #6 from Segher Boessenkool ---
Yeah that looks better, I'm still confused by REG_DEAD vs. REG_UNUSED, sigh.
The whole logic here seems somewhat confused. Or at least it is confusing me
:-)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
--- Comment #5 from Alan Modra ---
Created attachment 38802
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38802&action=edit
fix
Cures the error in find_call_crossed_cheap_reg
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
Alan Modra changed:
What|Removed |Added
Status|NEW |ASSIGNED
CC|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
--- Comment #3 from Segher Boessenkool ---
Before the first RTL CSE, we have on that second strcpy:
(call_insn 47 46 0 2 (parallel [
(set (reg:DI 3 3)
(call (mem:SI (symbol_ref:DI ("strcpy") [flags 0x41]
) [0 __built
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
Segher Boessenkool changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71709
--- Comment #1 from Andrew Pinski ---
GCC must be thinking saved_command_line and static_command_line are the same
...
Because strcpy returns the 1st argument.