From e69dbe3721a150e221e05edde4985dd961edafd1 Mon Sep 17 00:00:00 2001
From: Martin Jambor <mjambor@suse.cz>
Date: Thu, 5 Dec 2013 19:07:08 +0100
Subject: [PATCH] re PR ipa/58253 (IPA-SRA creates calls with different
 arguments that the callee accepts)

2013-12-05  Martin Jambor  <mjambor@suse.cz>

	PR ipa/58253
	* ipa-prop.c (ipa_modify_formal_parameters): Create decls of
	non-BLKmode in their naturally aligned type.

From-SVN: r205715
---
 gcc/ChangeLog  |  6 ++++++
 gcc/ipa-prop.c | 10 +++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 55757a06caf5..d4a52ee3d96c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-05  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/58253
+	* ipa-prop.c (ipa_modify_formal_parameters): Create decls of
+	non-BLKmode in their naturally aligned type.
+
 2013-12-05  Marek Polacek  <polacek@redhat.com>
 
 	PR sanitizer/59333
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 712dab76c50d..83dc53e93446 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -3444,7 +3444,15 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments)
 	  if (adj->by_ref)
 	    ptype = build_pointer_type (adj->type);
 	  else
-	    ptype = adj->type;
+	    {
+	      ptype = adj->type;
+	      if (is_gimple_reg_type (ptype))
+		{
+		  unsigned malign = GET_MODE_ALIGNMENT (TYPE_MODE (ptype));
+		  if (TYPE_ALIGN (ptype) < malign)
+		    ptype = build_aligned_type (ptype, malign);
+		}
+	    }
 
 	  if (care_for_types)
 	    new_arg_types = tree_cons (NULL_TREE, ptype, new_arg_types);
-- 
GitLab