diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-05-02 07:46:05 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-05-02 07:46:05 +0000 |
commit | 552cc5904c9d064873df6f165c99ef798df5f701 (patch) | |
tree | a35710fb0fe0f1de07e28239a0d7129a910e6748 /gcc/ada/gcc-interface/trans.c | |
parent | 6b9933b9b483b37bbed0a83e6631fff8de14a1f8 (diff) | |
download | gcc-552cc5904c9d064873df6f165c99ef798df5f701.zip gcc-552cc5904c9d064873df6f165c99ef798df5f701.tar.gz gcc-552cc5904c9d064873df6f165c99ef798df5f701.tar.bz2 |
decl.c (elaborate_reference_1): Do not bother about operand #2 for COMPONENT_REF.
* gcc-interface/decl.c (elaborate_reference_1): Do not bother about
operand #2 for COMPONENT_REF.
* gcc-interface/utils2.c (gnat_save_expr): Likewise.
(gnat_protect_expr): Likewise.
(gnat_stabilize_reference_1): Likewise.
(gnat_rewrite_reference): Do not bother about operand #3 for ARRAY_REF.
(get_inner_constant_reference): Likewise.
(gnat_invariant_expr): Likewise.
* gcc-interface/trans.c (fold_constant_decl_in_expr): Likewise.
From-SVN: r235701
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index d20b466..4febc04 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -955,14 +955,21 @@ fold_constant_decl_in_expr (tree exp) return DECL_INITIAL (exp); - case BIT_FIELD_REF: case COMPONENT_REF: op0 = fold_constant_decl_in_expr (TREE_OPERAND (exp, 0)); if (op0 == TREE_OPERAND (exp, 0)) return exp; - return fold_build3 (code, TREE_TYPE (exp), op0, TREE_OPERAND (exp, 1), - TREE_OPERAND (exp, 2)); + return fold_build3 (COMPONENT_REF, TREE_TYPE (exp), op0, + TREE_OPERAND (exp, 1), NULL_TREE); + + case BIT_FIELD_REF: + op0 = fold_constant_decl_in_expr (TREE_OPERAND (exp, 0)); + if (op0 == TREE_OPERAND (exp, 0)) + return exp; + + return fold_build3 (BIT_FIELD_REF, TREE_TYPE (exp), op0, + TREE_OPERAND (exp, 1), TREE_OPERAND (exp, 2)); case ARRAY_REF: case ARRAY_RANGE_REF: @@ -974,7 +981,7 @@ fold_constant_decl_in_expr (tree exp) return exp; return fold (build4 (code, TREE_TYPE (exp), op0, TREE_OPERAND (exp, 1), - TREE_OPERAND (exp, 2), TREE_OPERAND (exp, 3))); + TREE_OPERAND (exp, 2), NULL_TREE)); case REALPART_EXPR: case IMAGPART_EXPR: |