Allow the use of the ORIGIN and LENGTH attributes in expressions inside MEMORY regions.

PR 24289
	* ldexp.c (fold_name): Allow lookups of the LENGTH and ORIGIN
	attributes during the first phase.
This commit is contained in:
Nick Bowler
2019-03-06 15:20:29 +00:00
committed by Nick Clifton
parent 67a3048c0f
commit 912ebfa0d7
2 changed files with 24 additions and 22 deletions

View File

@ -1,3 +1,9 @@
2019-03-06 Nick Bowler <nbowler@draconx.ca>
PR 24289
* ldexp.c (fold_name): Allow lookups of the LENGTH and ORIGIN
attributes during the first phase.
2019-03-01 Andreas Krebbel <krebbel@linux.ibm.com>
This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.

View File

@ -864,34 +864,30 @@ fold_name (etree_type *tree)
case LENGTH:
{
if (expld.phase != lang_first_phase_enum)
{
lang_memory_region_type *mem;
lang_memory_region_type *mem;
mem = lang_memory_region_lookup (tree->name.name, FALSE);
if (mem != NULL)
new_number (mem->length);
else
einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
" referenced in expression\n"),
tree, tree->name.name);
}
mem = lang_memory_region_lookup (tree->name.name, FALSE);
if (mem != NULL)
new_number (mem->length);
else
einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
" referenced in expression\n"),
tree, tree->name.name);
}
break;
case ORIGIN:
if (expld.phase != lang_first_phase_enum)
{
lang_memory_region_type *mem;
{
lang_memory_region_type *mem;
mem = lang_memory_region_lookup (tree->name.name, FALSE);
if (mem != NULL)
new_rel_from_abs (mem->origin);
else
einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
" referenced in expression\n"),
tree, tree->name.name);
}
mem = lang_memory_region_lookup (tree->name.name, FALSE);
if (mem != NULL)
new_rel_from_abs (mem->origin);
else
einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
" referenced in expression\n"),
tree, tree->name.name);
}
break;
case CONSTANT: