]> git.ipfire.org Git - thirdparty/gcc.git/commit
strcpy arg optimised out
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jul 2016 11:15:17 +0000 (11:15 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jul 2016 11:15:17 +0000 (11:15 +0000)
commit79d123c1c7478ff538d15e545c9f1164a9bb756c
tree5ab3fb691d7f0c24f34cdd3ade7d2c0354bed2e0
parented8613ec472156fe0dc2189f6f5eec0ca41694da
strcpy arg optimised out

For functions that return an argument unchanged, like strcat,
find_call_crossed_cheap_reg attempts to find an assignment between
a pseudo reg and the arg reg before the call, so that uses of the
pseudo after the call can instead use the return value.  The exit
condition on the loop looking at previous insns was wrong.  Uses of
the arg reg don't matter.  What matters is the insn setting the arg
reg as any assignment involving the arg reg prior to that insn is
likely a completely unrelated use of the hard reg.

PR rtl-optimization/71709
* ira-lives.c (find_call_crossed_cheap_reg): Exit loop on arg reg
being set, not referenced.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237909 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/ira-lives.c