aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-03-09 13:20:03 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-03-09 13:20:03 +0000
commit26d7dc48b628d0fa16f2a1660b23602821c748f9 (patch)
treedca61888720a921a74449023227df9508f9e36ab /gcc
parent35f77c2855c08fa329638e05d29b9b0d18caa5c1 (diff)
downloadgcc-26d7dc48b628d0fa16f2a1660b23602821c748f9.zip
gcc-26d7dc48b628d0fa16f2a1660b23602821c748f9.tar.gz
gcc-26d7dc48b628d0fa16f2a1660b23602821c748f9.tar.bz2
re PR ipa/79970 (ICE in add_stack_var, at cfgexpand.c:450 with always_inline attribute)
2017-03-09 Richard Biener <rguenther@suse.de> PR ipa/79970 * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing alignment of BLKmode params. * gcc.dg/torture/pr79970.c: New testcase. From-SVN: r246001
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-prop.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr79970.c23
4 files changed, 36 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a50c7e9..da50ae6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-09 Richard Biener <rguenther@suse.de>
+
+ PR ipa/79970
+ * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
+ alignment of BLKmode params.
+
2017-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/79913
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index d519cdf..b3d5159 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -4198,7 +4198,8 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments)
else
{
ptype = adj->type;
- if (is_gimple_reg_type (ptype))
+ if (is_gimple_reg_type (ptype)
+ && TYPE_MODE (ptype) != BLKmode)
{
unsigned malign = GET_MODE_ALIGNMENT (TYPE_MODE (ptype));
if (TYPE_ALIGN (ptype) != malign)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 98f8733..78f6831 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-09 Richard Biener <rguenther@suse.de>
+
+ PR ipa/79970
+ * gcc.dg/torture/pr79970.c: New testcase.
+
2017-03-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71966
diff --git a/gcc/testsuite/gcc.dg/torture/pr79970.c b/gcc/testsuite/gcc.dg/torture/pr79970.c
new file mode 100644
index 0000000..270d5d7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr79970.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+/* { dg-additional-options "-mno-sse" { target x86_64-*-* i?86-*-* } } */
+
+typedef int c __attribute__ ((__vector_size__ (16)));
+
+__attribute__((always_inline)) void d (void); /* { dg-warning "" } { dg-error 7 "inlining failed" } */
+void f(c x);
+
+inline void e (c *b) {
+ f (*b);
+}
+
+void a ()
+{
+ struct
+ {
+ c g[4];
+ } h;
+ d ();
+ e (h.g);
+}
+