aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/m68k/pr63347.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/m68k/pr63347.c')
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr63347.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/m68k/pr63347.c b/gcc/testsuite/gcc.target/m68k/pr63347.c
new file mode 100644
index 00000000000..1d23e9a827a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr63347.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mcpu=5208" } */
+
+#include <stdlib.h>
+
+void __attribute__ ((noinline))
+oof()
+{
+ asm volatile ("" ::: "memory");
+}
+int print_info(unsigned int *ip_addr)
+{
+ int invalid = 0;
+
+ if (ip_addr) {
+ unsigned int haddr = *ip_addr;
+ oof("stuff");
+ if (0x0 == haddr) {
+ invalid = 1;
+ }
+ oof("stuff2");
+ } else {
+ invalid = 1;
+ }
+
+ return invalid;
+}
+
+int main(int argc, char *argv[])
+{
+ unsigned int myaddr;
+ int ret;
+
+ myaddr = 0x0;
+ ret = print_info(&myaddr);
+ if (!ret)
+ abort ();
+
+ myaddr = 0x01020304;
+ ret = print_info(&myaddr);
+ if (ret)
+ abort ();
+ exit (0);
+}
+
+