aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/trans.c
diff options
context:
space:
mode:
authorLaurent GUERBY <laurent@guerby.net>2004-04-23 06:28:52 +0000
committerLaurent Guerby <guerby@gcc.gnu.org>2004-04-23 06:28:52 +0000
commit78bad7752ea5a48caaac39ac0e9e3295bdf3722c (patch)
tree7042f455dd05cdc83ab99099b192a908f2b8dbb8 /gcc/ada/trans.c
parentbdabb1536f22549b7f90403c2af929abaadb7220 (diff)
downloadgcc-78bad7752ea5a48caaac39ac0e9e3295bdf3722c.zip
gcc-78bad7752ea5a48caaac39ac0e9e3295bdf3722c.tar.gz
gcc-78bad7752ea5a48caaac39ac0e9e3295bdf3722c.tar.bz2
re PR rtl-optimization/14984 (bootstrap binary compare differs for Ada object files on darwin)
2004-04-22 Laurent GUERBY <laurent@guerby.net> PR optimization/14984 PR optimization/14985 * trans.c (gigi): Fix non determinism leading to bootstrap comparison failures. From-SVN: r81076
Diffstat (limited to 'gcc/ada/trans.c')
-rw-r--r--gcc/ada/trans.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c
index 9c5b3f5..8b48545 100644
--- a/gcc/ada/trans.c
+++ b/gcc/ada/trans.c
@@ -2112,8 +2112,11 @@ tree_transform (Node_Id gnat_node)
for (gnat_temp = First (Elsif_Parts (gnat_node));
Present (gnat_temp); gnat_temp = Next (gnat_temp))
{
- tree gnu_elseif
- = build_nt (IF_STMT, gnat_to_gnu (Condition (gnat_temp)),
+ tree gnu_cond, gnu_elseif;
+
+ gnu_cond = gnat_to_gnu (Condition (gnat_temp));
+ gnu_elseif
+ = build_nt (IF_STMT, gnu_cond,
build_block_stmt (Then_Statements (gnat_temp)),
NULL_TREE, NULL_TREE);
@@ -2123,10 +2126,18 @@ tree_transform (Node_Id gnat_node)
gnu_result = gnu_elseif;
}
- gnu_result = build_nt (IF_STMT, gnat_to_gnu (Condition (gnat_node)),
- build_block_stmt (Then_Statements (gnat_node)),
- nreverse (gnu_result),
- build_block_stmt (Else_Statements (gnat_node)));
+ {
+ tree gnu_cond, then_block, else_block;
+
+ gnu_cond = gnat_to_gnu (Condition (gnat_node));
+ then_block = build_block_stmt (Then_Statements (gnat_node));
+ else_block = build_block_stmt (Else_Statements (gnat_node));
+
+ gnu_result = build_nt (IF_STMT, gnu_cond,
+ then_block,
+ nreverse (gnu_result),
+ else_block);
+ }
break;
case N_Case_Statement: