diff options
author | Laurent GUERBY <laurent@guerby.net> | 2004-04-23 06:28:52 +0000 |
---|---|---|
committer | Laurent Guerby <guerby@gcc.gnu.org> | 2004-04-23 06:28:52 +0000 |
commit | 78bad7752ea5a48caaac39ac0e9e3295bdf3722c (patch) | |
tree | 7042f455dd05cdc83ab99099b192a908f2b8dbb8 /gcc/ada/trans.c | |
parent | bdabb1536f22549b7f90403c2af929abaadb7220 (diff) | |
download | gcc-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.c | 23 |
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: |