[TER] PR target/48863 : Don't replace expressions across local register variable...
commit5c921deca362cec43fd0485e25c8efd53fc486c0
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Nov 2016 15:22:34 +0000 (24 15:22 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Nov 2016 15:22:34 +0000 (24 15:22 +0000)
tree960f57941e1d68bf6fbaa417e6a1f47b87b5e2d0
parent109508ee2e237c4a8da88cda9bc945c1721c10be
[TER] PR target/48863 : Don't replace expressions across local register variable definitions

PR target/48863
PR inline-asm/70184
* tree-ssa-ter.c (temp_expr_table): Add reg_vars_cnt field.
(new_temp_expr_table): Initialise reg_vars_cnt.
(free_temp_expr_table): Release reg_vars_cnt.
(process_replaceable): Add reg_vars_cnt argument, set reg_vars_cnt
field of TAB.
(find_replaceable_in_bb): Use the above to record register variable
write occurrences and cancel replacement across them.

* gcc.target/arm/pr48863.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242840 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr48863.c [new file with mode: 0644]
gcc/tree-ssa-ter.c