aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-09-20 11:04:22 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-09-20 11:04:22 +0200
commit88272c019414e6558db9c6c72053415fa88e0b5e (patch)
treec53ac0ff3cd0349189a19918ad706d6477eb6f3f
parentdcc34072c43b8081d337008d529d3e77e25c52bc (diff)
downloadgcc-88272c019414e6558db9c6c72053415fa88e0b5e.zip
gcc-88272c019414e6558db9c6c72053415fa88e0b5e.tar.gz
gcc-88272c019414e6558db9c6c72053415fa88e0b5e.tar.bz2
dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST that fits into uhwi or shwi...
* dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST that fits into uhwi or shwi, add DW_AT_const_value regardless of early_dwarf without going through RTL, using add_AT_unsigned or add_AT_int. * g++.dg/debug/dwarf2/template-params-13.C: New test. * g++.dg/debug/dwarf2/template-params-5.C: Adjust regexps so that it doesn't match newlines. * g++.dg/debug/dwarf2/template-params-3.C: Likewise. * g++.dg/debug/dwarf2/template-func-params-3.C: Likewise. * g++.dg/debug/dwarf2/lang-cpp98.C: Likewise. * g++.dg/debug/dwarf2/template-func-params-2.C: Likewise. * g++.dg/debug/dwarf2/template-func-params-1.C: Likewise. * g++.dg/debug/dwarf2/template-func-params-5.C: Likewise. * g++.dg/debug/dwarf2/template-params-1.C: Likewise. * g++.dg/debug/dwarf2/template-params-2.C: Likewise. * g++.dg/debug/dwarf2/lang-cpp14.C: Likewise. * g++.dg/debug/dwarf2/lang-cpp11.C: Likewise. From-SVN: r253004
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2out.c13
-rw-r--r--gcc/testsuite/ChangeLog16
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C10
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C2
15 files changed, 57 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f620568..b82df9f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2017-09-20 Jakub Jelinek <jakub@redhat.com>
+ * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
+ that fits into uhwi or shwi, add DW_AT_const_value regardless
+ of early_dwarf without going through RTL, using add_AT_unsigned
+ or add_AT_int.
+
* dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
(DEBUG_LTO_ABBREV_SECTION): Likewise.
(DEBUG_LTO_MACINFO_SECTION): Likewise.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index d757d2d..eed3a40 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -19446,6 +19446,19 @@ tree_add_const_value_attribute (dw_die_ref die, tree t)
init = t;
gcc_assert (!DECL_P (init));
+ if (TREE_CODE (init) == INTEGER_CST)
+ {
+ if (tree_fits_uhwi_p (init))
+ {
+ add_AT_unsigned (die, DW_AT_const_value, tree_to_uhwi (init));
+ return true;
+ }
+ if (tree_fits_shwi_p (init))
+ {
+ add_AT_int (die, DW_AT_const_value, tree_to_shwi (init));
+ return true;
+ }
+ }
if (! early_dwarf)
{
rtl = rtl_for_decl_init (init, type);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0cea29..0247ada 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2017-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/debug/dwarf2/template-params-13.C: New test.
+ * g++.dg/debug/dwarf2/template-params-5.C: Adjust regexps so that
+ it doesn't match newlines.
+ * g++.dg/debug/dwarf2/template-params-3.C: Likewise.
+ * g++.dg/debug/dwarf2/template-func-params-3.C: Likewise.
+ * g++.dg/debug/dwarf2/lang-cpp98.C: Likewise.
+ * g++.dg/debug/dwarf2/template-func-params-2.C: Likewise.
+ * g++.dg/debug/dwarf2/template-func-params-1.C: Likewise.
+ * g++.dg/debug/dwarf2/template-func-params-5.C: Likewise.
+ * g++.dg/debug/dwarf2/template-params-1.C: Likewise.
+ * g++.dg/debug/dwarf2/template-params-2.C: Likewise.
+ * g++.dg/debug/dwarf2/lang-cpp14.C: Likewise.
+ * g++.dg/debug/dwarf2/lang-cpp11.C: Likewise.
+
2017-09-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/64954
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
index 8079c0e..6bdc175 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++11 -gdwarf-5 -dA" }
// DW_LANG_C_plus_plus_11 = 0x001a
-// { dg-final { scan-assembler "0x1a.*DW_AT_language" } } */
+// { dg-final { scan-assembler "0x1a\[^\n\r]* DW_AT_language" } } */
int version;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
index 448ec7c..4fbc075 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++14 -gdwarf-5 -dA" }
// DW_LANG_C_plus_plus_14 = 0x0021
-// { dg-final { scan-assembler "0x21.*DW_AT_language" } } */
+// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
int version;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
index e7272da..bdb15d4 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++98 -gdwarf-2 -dA" }
// DW_LANG_C_plus_plus = 0x0004
-// { dg-final { scan-assembler "0x4.*DW_AT_language" } } */
+// { dg-final { scan-assembler "0x4\[^\n\r]* DW_AT_language" } } */
int version;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
index 5daa220..3556231 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
@@ -3,7 +3,7 @@
// { dg-options "-gdwarf-2 -dA" }
// { dg-do compile }
// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
-// { dg-final { scan-assembler "U.*DW_AT_name" } }
+// { dg-final { scan-assembler "U\[^\n\r]* DW_AT_name" } }
template <class U>
U
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
index 670598b..1096828 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
@@ -3,8 +3,8 @@
// { dg-options "-gdwarf-2 -dA" }
// { dg-do compile }
// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
-// { dg-final { scan-assembler "i.*DW_AT_name" } }
-// { dg-final { scan-assembler "3.*DW_AT_const_value" } }
+// { dg-final { scan-assembler "i\[^\n\r]* DW_AT_name" } }
+// { dg-final { scan-assembler "3\[^\n\r]* DW_AT_const_value" } }
template <int i>
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
index a356a2e..d806104 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
@@ -2,7 +2,7 @@
// Origin PR debug/30161
// { dg-options "-gdwarf-2 -dA -gno-strict-dwarf -fno-merge-debug-strings" }
// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
-// { dg-final { scan-assembler "f.*DW_AT_name" } }
+// { dg-final { scan-assembler "f\[^\n\r]* DW_AT_name" } }
// { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*_Z4blehv\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
typedef void (*func_ptr)();
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
index cc8b1ac..cb3a73f 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
@@ -2,7 +2,7 @@
// Origin PR debug/30161
// { dg-options "-gdwarf-2 -dA" }
// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
-// { dg-final { scan-assembler "T.*DW_AT_name" } }
+// { dg-final { scan-assembler "T\[^\n\r]* DW_AT_name" } }
template <class T>
struct vector
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
index b8f9202..21c71ec 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
@@ -3,7 +3,7 @@
// { dg-options "-gdwarf-2 -dA" }
// { dg-do compile }
// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
-// { dg-final { scan-assembler "U.*DW_AT_name" } }
+// { dg-final { scan-assembler "U\[^\n\r]* DW_AT_name" } }
template <class U>
class A
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C
new file mode 100644
index 0000000..f32ac17
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C
@@ -0,0 +1,10 @@
+// { dg-options "-gdwarf-2 -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
+// { dg-final { scan-assembler "N\[^\n\r]* DW_AT_name" } }
+// { dg-final { scan-assembler "9\[^\n\r]* DW_AT_const_value" } }
+
+template <int N> class C {};
+template <typename T> struct E {};
+E<struct A> f;
+struct A { C<9> g; };
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
index 0a00fd6..e6ca525 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
@@ -3,8 +3,8 @@
// { dg-options "-gdwarf-2 -dA" }
// { dg-do compile }
// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
-// { dg-final { scan-assembler "i.*DW_AT_name" } }
-// { dg-final { scan-assembler "3.*DW_AT_const_value" } }
+// { dg-final { scan-assembler "i\[^\n\r]* DW_AT_name" } }
+// { dg-final { scan-assembler "3\[^\n\r]* DW_AT_const_value" } }
template <int i>
struct A
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
index fc309ec..7a9af77 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
@@ -2,7 +2,7 @@
// Origin PR debug/30161
// { dg-options "-gdwarf-2 -dA -gno-strict-dwarf -fno-merge-debug-strings" }
// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
-// { dg-final { scan-assembler "f.*DW_AT_name" } }
+// { dg-final { scan-assembler "f\[^\n\r]* DW_AT_name" } }
// { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*_Z4blehv\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
typedef void (*func_ptr) ();
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
index 0258498..ed08122 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
@@ -2,7 +2,7 @@
// Origin PR debug/30161
// { dg-options "-gdwarf-2 -dA" }
// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
-// { dg-final { scan-assembler "T.*DW_AT_name" } }
+// { dg-final { scan-assembler "T\[^\n\r]* DW_AT_name" } }
template <class T>
struct vector