Make SRA scalarize constant-pool loads
authorAlan Lawrence <alan.lawrence@arm.com>
Mon, 18 Jan 2016 12:29:02 +0000 (12:29 +0000)
committerAlan Lawrence <alalaw01@gcc.gnu.org>
Mon, 18 Jan 2016 12:29:02 +0000 (12:29 +0000)
commit88bed19634d9419cb95ca0062e6a03405cfbaf98
tree7851c3d73521e5ceff55c173e0ff37a942ce966a
parent13092f619889805136f945718288a3c17c6beae1
Make SRA scalarize constant-pool loads

PR target/63679

gcc/ChangeLog:

* tree-sra.c (disqualified_constants, constant_decl_p): New.
(sra_initialize): Allocate disqualified_constants.
(sra_deinitialize): Free disqualified_constants.
(disqualify_candidate): Update disqualified_constants when appropriate.
(create_access): Scan for constant-pool entries as we go along.
(scalarizable_type_p): Add check against type_contains_placeholder_p.
(maybe_add_sra_candidate): Allow constant-pool entries.
(load_assign_lhs_subreplacements): Bind debug for constant pool vars.
(initialize_constant_pool_replacements): New.
(sra_modify_assign): Avoid mangling assignments created by previous,
and don't generate writes into constant pool.
(sra_modify_function_body): Call initialize_constant_pool_replacements.

gcc/testsuite/:

* gcc.dg/tree-ssa/sra-17.c: New.
* gcc.dg/tree-ssa/sra-18.c: New.

From-SVN: r232506
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/sra-17.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/sra-18.c [new file with mode: 0644]
gcc/tree-sra.c