aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-sra.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-03-31 13:32:59 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-03-31 13:32:59 +0000
commit78f1b5234a80f335b60b8687d1d6705aa262ea99 (patch)
treeefacf95b9b4bef0d10521890c23716f2a62224b0 /gcc/tree-sra.c
parent2d38d80934cd2e8a60b212ed34ffc7b062d7960a (diff)
downloadgcc-78f1b5234a80f335b60b8687d1d6705aa262ea99.zip
gcc-78f1b5234a80f335b60b8687d1d6705aa262ea99.tar.gz
gcc-78f1b5234a80f335b60b8687d1d6705aa262ea99.tar.bz2
tree-sra.c (create_access_replacement): Drop under-/over-alignment of types.
2015-03-31 Richard Biener <rguenther@suse.de> * tree-sra.c (create_access_replacement): Drop under-/over-alignment of types. From-SVN: r221795
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r--gcc/tree-sra.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 91b72fb..6adee70 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -2012,7 +2012,11 @@ create_access_replacement (struct access *access)
DECL_CONTEXT (repl) = current_function_decl;
}
else
- repl = create_tmp_var (access->type, "SR");
+ /* Drop any special alignment on the type if it's not on the main
+ variant. This avoids issues with weirdo ABIs like AAPCS. */
+ repl = create_tmp_var (build_qualified_type
+ (TYPE_MAIN_VARIANT (access->type),
+ TYPE_QUALS (access->type)), "SR");
if (TREE_CODE (access->type) == COMPLEX_TYPE
|| TREE_CODE (access->type) == VECTOR_TYPE)
{