aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorAlexander Basov <coohpt@gmail.com>2015-08-03 19:34:31 +0000
committerJeff Law <law@gcc.gnu.org>2015-08-03 13:34:31 -0600
commitde0fb9055c0928960ecc8e3a5fe990728611c3ca (patch)
treea36a9bce7ffcf52891f3053b06bef0050c844f81 /gcc/testsuite
parentf2fef1c8a3a93f320e9842d09a0ad44d0157281b (diff)
downloadgcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.zip
gcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.tar.gz
gcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.tar.bz2
re PR middle-end/64744 (ARM: gcc internal compiler error: in store_field, at expr.c:6659)
PR middle-end/64744 PR middle-end/48470 PR middle-end/43404 * cfgexpand.c (expand_one_var): Add check if stack is going to be used in naked function. * expr.c (expand_expr_addr_expr_1): Remove excess checking whether expression should not reside in MEM. * function.c (use_register_for_decl): Do not use registers for non-register things (volatile, float, BLKMode) in naked functions. PR middle-end/64744 PR middle-end/48470 PR middle-end/43404 * gcc.target/arm/pr43404.c : New testcase. * gcc.target/arm/pr48470.c : New testcase. * gcc.target/arm/pr64744-1.c : New testcase. * gcc.target/arm/pr64744-2.c : New testcase. From-SVN: r226528
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/gcc.target/arm/pr43404.c10
-rw-r--r--gcc/testsuite/gcc.target/arm/pr48470.c11
-rw-r--r--gcc/testsuite/gcc.target/arm/pr64744-1.c40
-rw-r--r--gcc/testsuite/gcc.target/arm/pr64744-2.c13
5 files changed, 84 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 44d7eb9..1fe025b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2015-08-03 Alexander Basov <coohpt@gmail.com>
+
+ PR middle-end/64744
+ PR middle-end/48470
+ PR middle-end/43404
+ * gcc.target/arm/pr43404.c : New testcase.
+ * gcc.target/arm/pr48470.c : New testcase.
+ * gcc.target/arm/pr64744-1.c : New testcase.
+ * gcc.target/arm/pr64744-2.c : New testcase.
+
2015-08-03 H.J. Lu <hongjiu.lu@intel.com>
PR tree-optimization/67077
diff --git a/gcc/testsuite/gcc.target/arm/pr43404.c b/gcc/testsuite/gcc.target/arm/pr43404.c
new file mode 100644
index 0000000..4f2291d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr43404.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O0" } */
+
+__attribute__ ((naked))
+void __data_abort(void)
+{
+ long foo; /* { dg-error "cannot allocate stack for variable" } */
+ long* bar = &foo;
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr48470.c b/gcc/testsuite/gcc.target/arm/pr48470.c
new file mode 100644
index 0000000..20343e7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr48470.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O0" } */
+
+extern void g(int *x);
+
+void __attribute__((naked)) f(void)
+{
+ int x = 0; /* { dg-error "cannot allocate stack for variable" } */
+ g(&x);
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr64744-1.c b/gcc/testsuite/gcc.target/arm/pr64744-1.c
new file mode 100644
index 0000000..4029303
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr64744-1.c
@@ -0,0 +1,40 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O0" } */
+
+__attribute__((naked))
+void foo1 ()
+{
+ int aa = 0;
+ int ab = {0};
+}
+
+__attribute__((naked))
+void foo2() {
+ char aa [ ] = {}; /* { dg-error "cannot allocate stack for variable" } */
+ char ab [1] = {};
+ char ac [2] = {}; /* { dg-error "cannot allocate stack for variable" } */
+ char ad [3] = {}; /* { dg-error "cannot allocate stack for variable" } */
+}
+
+__attribute__((naked))
+void foo3() {
+ char aa [1] = {0};
+ char ab [2] = {0}; /* { dg-error "cannot allocate stack for variable" } */
+ char ac [3] = {0}; /* { dg-error "cannot allocate stack for variable" } */
+ char ad [4] = {0}; /* { dg-error "cannot allocate stack for variable" } */
+}
+
+__attribute__((naked))
+void foo4() {
+ char aa [2] = {0,0}; /* { dg-error "cannot allocate stack for variable" } */
+}
+__attribute__((naked))
+void foo5() {
+ char aa [3] = {0,0,0}; /* { dg-error "cannot allocate stack for variable" } */
+}
+
+__attribute__((naked))
+void foo6() {
+ char aa [4] = {0,0,0,0}; /* { dg-error "cannot allocate stack for variable" } */
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr64744-2.c b/gcc/testsuite/gcc.target/arm/pr64744-2.c
new file mode 100644
index 0000000..d33ea7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr64744-2.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O0" } */
+
+struct s {
+ char a;
+ int b;
+};
+
+__attribute__((naked))
+void foo () {
+ struct s x = {}; /* { dg-error "cannot allocate stack for variable" } */
+}