aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2006-08-22 19:16:03 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2006-08-22 19:16:03 +0000
commit9a23b833613b375031e84fc9c7dcb3b5ab875d42 (patch)
tree7bd3281bf5c5f9d7fc4641e7a22befdb48fed4a5
parent5e8c38c2de194a8eb5733977325c982838f04390 (diff)
downloadgcc-9a23b833613b375031e84fc9c7dcb3b5ab875d42.zip
gcc-9a23b833613b375031e84fc9c7dcb3b5ab875d42.tar.gz
gcc-9a23b833613b375031e84fc9c7dcb3b5ab875d42.tar.bz2
Index: gcc/ChangeLog
2006-08-21 Geoffrey Keating <geoffk@apple.com> PR debug/28692 * dwarf2out.c (rtl_for_decl_init): Don't try to create RTL for complex values, nor for generic vector values. Index: gcc/testsuite/ChangeLog 2006-08-21 Geoffrey Keating <geoffk@apple.com> PR debug/28692 * gcc.dg/debug/const-1.c: New. * gcc.dg/debug/const-2.c: New. * gcc.dg/debug/dwarf2/const-1.c: New. * gcc.dg/debug/dwarf2/const-2.c: New. * gcc.dg/debug/dwarf2/const-2b.c: New. From-SVN: r116331
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c11
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gcc.dg/debug/const-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/debug/const-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c6
8 files changed, 45 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index caf083b..195c92b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-08-21 Geoffrey Keating <geoffk@apple.com>
+
+ PR debug/28692
+ * dwarf2out.c (rtl_for_decl_init): Don't try to create RTL for
+ complex values, nor for generic vector values.
+
2006-08-22 Richard Guenther <rguenther@suse.de>
PR middle-end/28776
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 896f853..76fd7f0 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -9942,10 +9942,13 @@ rtl_for_decl_init (tree init, tree type)
rtl = gen_rtx_CONST_STRING (VOIDmode,
ggc_strdup (TREE_STRING_POINTER (init)));
}
- /* Although DWARF could easily handle other kinds of aggregates, we
- have no way to represent such values as RTL constants, so skip
- those. */
- else if (AGGREGATE_TYPE_P (type))
+ /* Other aggregates, and complex values, could be represented using
+ CONCAT: FIXME! */
+ else if (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE)
+ ;
+ /* Vectors only work if their mode is supported by the target.
+ FIXME: generic vectors ought to work too. */
+ else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_MODE (type) == BLKmode)
;
/* If the initializer is something that we know will expand into an
immediate RTL constant, expand it now. We must be careful not to
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5c029fa..502921c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2006-08-21 Geoffrey Keating <geoffk@apple.com>
+
+ PR debug/28692
+ * gcc.dg/debug/const-1.c: New.
+ * gcc.dg/debug/const-2.c: New.
+ * gcc.dg/debug/dwarf2/const-1.c: New.
+ * gcc.dg/debug/dwarf2/const-2.c: New.
+ * gcc.dg/debug/dwarf2/const-2b.c: New.
+
2006-08-22 Richard Guenther <rguenther@suse.de>
PR middle-end/28776
diff --git a/gcc/testsuite/gcc.dg/debug/const-1.c b/gcc/testsuite/gcc.dg/debug/const-1.c
new file mode 100644
index 0000000..bc52661
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/const-1.c
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+typedef float FloatVect __attribute__((__vector_size__(16)));
+static FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
diff --git a/gcc/testsuite/gcc.dg/debug/const-2.c b/gcc/testsuite/gcc.dg/debug/const-2.c
new file mode 100644
index 0000000..7b9c244
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/const-2.c
@@ -0,0 +1,2 @@
+/* { dg-do compile } */
+static __complex__ int x = 3.0;
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c
new file mode 100644
index 0000000..aa20e6d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O -gdwarf-2 -dA" } */
+/* { dg-final { scan-assembler "DW_AT_const_value" } } */
+
+extern void x();
+static void (*f)() = x;
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c b/gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c
new file mode 100644
index 0000000..d3039c6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c
@@ -0,0 +1,6 @@
+/* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-options "-O -gdwarf-2 -dA -maltivec" } */
+/* { dg-final { scan-assembler "DW_AT_const_value" } } */
+
+typedef float FloatVect __attribute__((__vector_size__(16)));
+static FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c b/gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c
new file mode 100644
index 0000000..9d577ea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c
@@ -0,0 +1,6 @@
+/* { dg-do compile { target i386*-*-* } } */
+/* { dg-options "-O -gdwarf-2 -dA -msse" } */
+/* { dg-final { scan-assembler "DW_AT_const_value" } } */
+
+typedef float FloatVect __attribute__((__vector_size__(16)));
+static FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };