diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-09-20 11:04:22 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-09-20 11:04:22 +0200 |
commit | 88272c019414e6558db9c6c72053415fa88e0b5e (patch) | |
tree | c53ac0ff3cd0349189a19918ad706d6477eb6f3f | |
parent | dcc34072c43b8081d337008d529d3e77e25c52bc (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C | 2 |
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 |