[PATCH] Fix arm regression after SRA alignment fix
Richard Biener
rguenther@suse.de
Tue Mar 31 13:29:00 GMT 2015
The following avoids running into issues with the AACPS ABI on arm
when using over-aligned types on registers.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.
Richard.
2015-03-31 Richard Biener <rguenther@suse.de>
* tree-sra.c (create_access_replacement): Drop under-/over-alignment
of types.
Index: gcc/tree-sra.c
===================================================================
--- gcc/tree-sra.c (revision 221770)
+++ gcc/tree-sra.c (working copy)
@@ -2012,7 +2012,11 @@ create_access_replacement (struct 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)
{
More information about the Gcc-patches
mailing list