From 78bad7752ea5a48caaac39ac0e9e3295bdf3722c Mon Sep 17 00:00:00 2001 From: Laurent GUERBY Date: Fri, 23 Apr 2004 06:28:52 +0000 Subject: [PATCH] re PR rtl-optimization/14984 (bootstrap binary compare differs for Ada object files on darwin) 2004-04-22 Laurent GUERBY PR optimization/14984 PR optimization/14985 * trans.c (gigi): Fix non determinism leading to bootstrap comparison failures. From-SVN: r81076 --- gcc/ada/ChangeLog | 7 +++++++ gcc/ada/trans.c | 23 +++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 55b06a02c7f..697cdb379de 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2004-04-22 Laurent GUERBY + + PR optimization/14984 + PR optimization/14985 + * trans.c (gigi): Fix non determinism leading to bootstrap + comparison failures. + 2004-04-21 Pascal Obry * adaint.c (__gnat_portable_spawn): Quote first argument (argv[0]) diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c index 9c5b3f5f883..8b485455949 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: -- 2.30.2