re PR rtl-optimization/12826 (Optimizer removes reference through volatile pointer)
authorJan Hubicka <jh@suse.cz>
Mon, 12 Jan 2004 16:25:32 +0000 (17:25 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 12 Jan 2004 16:25:32 +0000 (16:25 +0000)
PR opt/12826
* gcc.dg/20040112-1.c: New.

* gcc.dg/dwarf-die[1-7].c: Move to...
* gcc.dg/debug/dwarf2/dwarf-die[1-7].c: ... here.
* gcc.dg/debug/dwarf2/dwarf2.exp: New.

From-SVN: r75732

15 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20040112-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp [new file with mode: 0644]
gcc/testsuite/gcc.dg/dwarf-die1.c [deleted file]
gcc/testsuite/gcc.dg/dwarf-die2.c [deleted file]
gcc/testsuite/gcc.dg/dwarf-die3.c [deleted file]
gcc/testsuite/gcc.dg/dwarf-die5.c [deleted file]
gcc/testsuite/gcc.dg/dwarf-die6.c [deleted file]
gcc/testsuite/gcc.dg/dwarf-die7.c [deleted file]

index 4c1aae0711d2540f46780176a665ba45a0d50da6..1c5950be7fd4185b2ca660f50095c26297970e4c 100644 (file)
@@ -1,3 +1,12 @@
+2004-01-12  Jan Hubicka  <jh@suse.cz>
+
+       PR opt/12826
+       * gcc.dg/20040112-1.c: New.
+
+       * gcc.dg/dwarf-die[1-7].c: Move to...
+       * gcc.dg/debug/dwarf2/dwarf-die[1-7].c: ... here.
+       * gcc.dg/debug/dwarf2/dwarf2.exp: New.
+
 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
 
        PR c++/4100
diff --git a/gcc/testsuite/gcc.dg/20040112-1.c b/gcc/testsuite/gcc.dg/20040112-1.c
new file mode 100644 (file)
index 0000000..83996fe
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "testb" } } */
+ftn (char *sp)
+{
+  char status;
+
+  while (1)
+    {
+      *sp = 0xE8;
+      status = *(volatile char *) sp;
+      if (status & 0x80)
+       break;
+    }
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c
new file mode 100644 (file)
index 0000000..39f0bf2
--- /dev/null
@@ -0,0 +1,8 @@
+/* Verify that inline function never actually inlined has no abstract DIE.  */
+/* { dg-do compile */
+/* { dg-options "-O2 -gdwarf-2 -dA" } */
+/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
+inline int t()
+{
+}
+int (*q)()=t;
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
new file mode 100644 (file)
index 0000000..48bce24
--- /dev/null
@@ -0,0 +1,7 @@
+/* Verify that inline function never actually emit has no DIE.  */
+/* { dg-do compile */
+/* { dg-options "-O0 -gdwarf-2 -dA" } */
+/* { dg-final { scan-assembler-not "CIE Version" } } */
+static inline int t()
+{
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c
new file mode 100644 (file)
index 0000000..34fddfa
--- /dev/null
@@ -0,0 +1,11 @@
+/* Verify that extern inline function never actually inlined has no abstract DIE.  */
+/* { dg-do compile */
+/* { dg-options "-O0 -gdwarf-2 -dA" } */
+/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
+extern inline int t()
+{
+}
+int (*q)()=t;
+int t()
+{
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die5.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die5.c
new file mode 100644 (file)
index 0000000..b3a245d
--- /dev/null
@@ -0,0 +1,12 @@
+/* Inlined inline function must have abstract DIE  */
+/* { dg-do compile */
+/* { dg-options "-O2 -gdwarf-2 -dA -fpreprocessed" } */
+/* { dg-final { scan-assembler "3.*DW_AT_inline" } } */
+#1 "test.h"
+inline int t()
+{
+}
+int q()
+{
+  t();
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c
new file mode 100644 (file)
index 0000000..40cdc8d
--- /dev/null
@@ -0,0 +1,12 @@
+/* not inline inline function must not have abstract DIE  */
+/* { dg-do compile */
+/* { dg-options "-O2 -fno-inline -gdwarf-2 -dA -fpreprocessed" } */
+/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
+#1 "test.h"
+inline int t()
+{
+}
+int q()
+{
+  t();
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
new file mode 100644 (file)
index 0000000..d8d013a
--- /dev/null
@@ -0,0 +1,14 @@
+/* Inlined non-inline function must have abstract DIE  */
+/* { dg-do compile */
+/* { dg-options "-O2 -gdwarf-2 -dA -fpreprocessed" } */
+/* { dg-final { scan-assembler "1.*DW_AT_inline" } } */
+#1 "test.h"
+void f(void);
+static int t()
+{
+       f();
+}
+int q()
+{
+  t();
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
new file mode 100644 (file)
index 0000000..6e3621d
--- /dev/null
@@ -0,0 +1,42 @@
+#   Copyright (C) 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# GCC testsuite that uses the `dg.exp' driver.
+
+# Load support procs.
+load_lib gcc-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CFLAGS
+if ![info exists DEFAULT_CFLAGS] then {
+    set DEFAULT_CFLAGS " -ansi -pedantic-errors -gdwarf-2"
+}
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+set comp_output [gcc_target_compile \
+    "$srcdir/$subdir/../trivial.c" "trivial.S" assembly \
+    "additional_flags=-gdwarf-2"]
+if { ! [string match "*: target system does not support the * debug format*" \
+    $comp_output] } {
+    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
+           "" $DEFAULT_CFLAGS
+}
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gcc.dg/dwarf-die1.c b/gcc/testsuite/gcc.dg/dwarf-die1.c
deleted file mode 100644 (file)
index 39f0bf2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Verify that inline function never actually inlined has no abstract DIE.  */
-/* { dg-do compile */
-/* { dg-options "-O2 -gdwarf-2 -dA" } */
-/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
-inline int t()
-{
-}
-int (*q)()=t;
diff --git a/gcc/testsuite/gcc.dg/dwarf-die2.c b/gcc/testsuite/gcc.dg/dwarf-die2.c
deleted file mode 100644 (file)
index 48bce24..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Verify that inline function never actually emit has no DIE.  */
-/* { dg-do compile */
-/* { dg-options "-O0 -gdwarf-2 -dA" } */
-/* { dg-final { scan-assembler-not "CIE Version" } } */
-static inline int t()
-{
-}
diff --git a/gcc/testsuite/gcc.dg/dwarf-die3.c b/gcc/testsuite/gcc.dg/dwarf-die3.c
deleted file mode 100644 (file)
index 34fddfa..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Verify that extern inline function never actually inlined has no abstract DIE.  */
-/* { dg-do compile */
-/* { dg-options "-O0 -gdwarf-2 -dA" } */
-/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
-extern inline int t()
-{
-}
-int (*q)()=t;
-int t()
-{
-}
diff --git a/gcc/testsuite/gcc.dg/dwarf-die5.c b/gcc/testsuite/gcc.dg/dwarf-die5.c
deleted file mode 100644 (file)
index b3a245d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Inlined inline function must have abstract DIE  */
-/* { dg-do compile */
-/* { dg-options "-O2 -gdwarf-2 -dA -fpreprocessed" } */
-/* { dg-final { scan-assembler "3.*DW_AT_inline" } } */
-#1 "test.h"
-inline int t()
-{
-}
-int q()
-{
-  t();
-}
diff --git a/gcc/testsuite/gcc.dg/dwarf-die6.c b/gcc/testsuite/gcc.dg/dwarf-die6.c
deleted file mode 100644 (file)
index 40cdc8d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* not inline inline function must not have abstract DIE  */
-/* { dg-do compile */
-/* { dg-options "-O2 -fno-inline -gdwarf-2 -dA -fpreprocessed" } */
-/* { dg-final { scan-assembler-not "DW_AT_inline" } } */
-#1 "test.h"
-inline int t()
-{
-}
-int q()
-{
-  t();
-}
diff --git a/gcc/testsuite/gcc.dg/dwarf-die7.c b/gcc/testsuite/gcc.dg/dwarf-die7.c
deleted file mode 100644 (file)
index d8d013a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Inlined non-inline function must have abstract DIE  */
-/* { dg-do compile */
-/* { dg-options "-O2 -gdwarf-2 -dA -fpreprocessed" } */
-/* { dg-final { scan-assembler "1.*DW_AT_inline" } } */
-#1 "test.h"
-void f(void);
-static int t()
-{
-       f();
-}
-int q()
-{
-  t();
-}