aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils2.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2012-07-03 08:49:54 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-07-03 08:49:54 +0000
commit4a147e4e048576fd75cec40797cca5a972c91c48 (patch)
tree50dbff5174357134e5765f52d37d701d41e0be34 /gcc/ada/gcc-interface/utils2.c
parent28dd005525dc1a166827d6fe818e01bed7f42e1b (diff)
downloadgcc-4a147e4e048576fd75cec40797cca5a972c91c48.zip
gcc-4a147e4e048576fd75cec40797cca5a972c91c48.tar.gz
gcc-4a147e4e048576fd75cec40797cca5a972c91c48.tar.bz2
utils2.c (build_simple_component_ref): Do not look through an extension if the type contains a placeholder.
* gcc-interface/utils2.c (build_simple_component_ref): Do not look through an extension if the type contains a placeholder. From-SVN: r189202
Diffstat (limited to 'gcc/ada/gcc-interface/utils2.c')
-rw-r--r--gcc/ada/gcc-interface/utils2.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index c7dfe98..b72ebed 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -1912,10 +1912,12 @@ build_simple_component_ref (tree record_variable, tree component,
break;
/* Next, see if we're looking for an inherited component in an extension.
- If so, look thru the extension directly. */
+ If so, look thru the extension directly, but not if the type contains
+ a placeholder, as it might be needed for a later substitution. */
if (!new_field
&& TREE_CODE (record_variable) == VIEW_CONVERT_EXPR
&& TYPE_ALIGN_OK (record_type)
+ && !type_contains_placeholder_p (record_type)
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (record_variable, 0)))
== RECORD_TYPE
&& TYPE_ALIGN_OK (TREE_TYPE (TREE_OPERAND (record_variable, 0))))