summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-31 13:32:59 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-31 13:32:59 +0000
commitc75febdbc7d50b94f59cb5749d604ce5228cd2e8 (patch)
treeefacf95b9b4bef0d10521890c23716f2a62224b0
parent068772324351dc31aa8970896bee4041172b8a47 (diff)
downloadgcc-c75febdbc7d50b94f59cb5749d604ce5228cd2e8.tar.gz
2015-03-31 Richard Biener <rguenther@suse.de>
* tree-sra.c (create_access_replacement): Drop under-/over-alignment of types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221795 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-sra.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 72389ee4e7a..e37abf98162 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-31 Richard Biener <rguenther@suse.de>
+
+ * tree-sra.c (create_access_replacement): Drop under-/over-alignment
+ of types.
+
2015-03-31 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/s390.c (s390_function_num_hotpatch_hw): Allow hotpatching
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 91b72fbdc89..6adee70bce5 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)
{