Commit a297ccb5 by James Bowman Committed by James Bowman

FT32 makes use of multiple address spaces.


FT32 makes use of multiple address spaces. When trying to inspect
objects in GDB, GDB was treating them as a straight "const". The cause
seems to be in GCC DWARF2 output.

This output is handled in gcc/gcc/dwarf2out.c, where modified_type_die()
checks that TYPE has qualifiers CV_QUALS. However while TYPE has
ADDR_SPACE qualifiers, the modified_type_die() explicitly discards the
ADDR_SPACE qualifiers.

This patch retains the ADDR_SPACE qualifiers as modified_type_die()
outputs the DWARF type tree.  This allows the types to match, and correct
type information for the object is emitted.

[gcc]

2017-11-06  James Bowman  <james.bowman@ftdichip.com>

	* gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE
	qualifiers.
        (add_type_attribute) likewise.

From-SVN: r254484
parent 853c0dfb
2017-11-06 James Bowman <james.bowman@ftdichip.com>
* gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE
qualifiers.
(add_type_attribute) likewise.
2017-11-06 H.J. Lu <hongjiu.lu@intel.com> 2017-11-06 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_can_use_return_insn_p): Use reference * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
...@@ -12481,7 +12481,8 @@ modified_type_die (tree type, int cv_quals, bool reverse, ...@@ -12481,7 +12481,8 @@ modified_type_die (tree type, int cv_quals, bool reverse,
dw_die_ref mod_scope; dw_die_ref mod_scope;
/* Only these cv-qualifiers are currently handled. */ /* Only these cv-qualifiers are currently handled. */
const int cv_qual_mask = (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE const int cv_qual_mask = (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE
| TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC); | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC |
ENCODE_QUAL_ADDR_SPACE(~0U));
const bool reverse_base_type const bool reverse_base_type
= need_endianity_attribute_p (reverse) && is_base_type (type); = need_endianity_attribute_p (reverse) && is_base_type (type);
...@@ -20708,7 +20709,7 @@ add_type_attribute (dw_die_ref object_die, tree type, int cv_quals, ...@@ -20708,7 +20709,7 @@ add_type_attribute (dw_die_ref object_die, tree type, int cv_quals,
return; return;
type_die = modified_type_die (type, type_die = modified_type_die (type,
cv_quals | TYPE_QUALS_NO_ADDR_SPACE (type), cv_quals | TYPE_QUALS (type),
reverse, reverse,
context_die); context_die);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment