diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-04-18 16:58:48 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-04-18 16:58:48 +0000 |
commit | 4ec1a73857bfc8adad5104bb9970209d99be4dc3 (patch) | |
tree | 7d7c30c08618b11ab4c161ae199435cc50039333 /gcc/dwarf2out.c | |
parent | 3a2e884b4fcc0acac1762f809d6b46739b6cb00b (diff) | |
download | gcc-4ec1a73857bfc8adad5104bb9970209d99be4dc3.tar.gz |
PR debug/80263
* dwarf2out.c (modified_type_die): Try harder not to emit internal
sizetype type into debug info.
* gcc.dg/debug/dwarf2/pr80263.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246973 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 89d18725c3a..27fb9f05193 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -12464,20 +12464,29 @@ modified_type_die (tree type, int cv_quals, bool reverse, this type. */ qualified_type = get_qualified_type (type, cv_quals); - if (qualified_type == sizetype - && TYPE_NAME (qualified_type) - && TREE_CODE (TYPE_NAME (qualified_type)) == TYPE_DECL) + if (qualified_type == sizetype) { - tree t = TREE_TYPE (TYPE_NAME (qualified_type)); + /* Try not to expose the internal sizetype type's name. */ + if (TYPE_NAME (qualified_type) + && TREE_CODE (TYPE_NAME (qualified_type)) == TYPE_DECL) + { + tree t = TREE_TYPE (TYPE_NAME (qualified_type)); - gcc_checking_assert (TREE_CODE (t) == INTEGER_TYPE - && TYPE_PRECISION (t) - == TYPE_PRECISION (qualified_type) - && TYPE_UNSIGNED (t) - == TYPE_UNSIGNED (qualified_type)); - qualified_type = t; + gcc_checking_assert (TREE_CODE (t) == INTEGER_TYPE + && (TYPE_PRECISION (t) + == TYPE_PRECISION (qualified_type)) + && (TYPE_UNSIGNED (t) + == TYPE_UNSIGNED (qualified_type))); + qualified_type = t; + } + else if (qualified_type == sizetype + && TREE_CODE (sizetype) == TREE_CODE (size_type_node) + && TYPE_PRECISION (sizetype) == TYPE_PRECISION (size_type_node) + && TYPE_UNSIGNED (sizetype) == TYPE_UNSIGNED (size_type_node)) + qualified_type = size_type_node; } + /* If we do, then we can just use its DIE, if it exists. */ if (qualified_type) { |