From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1851) id 28C713858422; Mon, 22 Nov 2021 12:44:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 28C713858422 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Martin Liska To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/marxin/heads/loop-unswitch-improvement)] Fix floating point types. X-Act-Checkin: gcc X-Git-Author: Martin Liska X-Git-Refname: refs/users/marxin/heads/loop-unswitch-improvement X-Git-Oldrev: 3b45bd2b8203860a850ffa7d7c92b53bef69c40a X-Git-Newrev: cc9dcdf4997c7e5db3f58832a1130081c661b7c2 Message-Id: <20211122124443.28C713858422@sourceware.org> Date: Mon, 22 Nov 2021 12:44:43 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Nov 2021 12:44:43 -0000 https://gcc.gnu.org/g:cc9dcdf4997c7e5db3f58832a1130081c661b7c2 commit cc9dcdf4997c7e5db3f58832a1130081c661b7c2 Author: Martin Liska Date: Tue Nov 16 10:32:10 2021 +0100 Fix floating point types. Diff: --- gcc/tree-ssa-loop-unswitch.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c index 895b47b968e..e465e14a6ab 100644 --- a/gcc/tree-ssa-loop-unswitch.c +++ b/gcc/tree-ssa-loop-unswitch.c @@ -244,15 +244,20 @@ tree_may_unswitch_on (basic_block bb, class loop *loop, gimple_ranger *ranger) return NULL; } - cond = build2 (gimple_cond_code (stmt), boolean_type_node, - gimple_cond_lhs (stmt), gimple_cond_rhs (stmt)); + tree lhs = gimple_cond_lhs (stmt); + tree rhs = gimple_cond_rhs (stmt); + cond = build2 (gimple_cond_code (stmt), boolean_type_node, lhs, rhs); edge edge_true, edge_false; extract_true_false_edges_from_block (bb, &edge_true, &edge_false); unswitch_predicate *predicate = new unswitch_predicate (stmt, cond); - ranger->range_on_edge (predicate->true_range, edge_true, gimple_cond_lhs (stmt)); - ranger->range_on_edge (predicate->false_range, edge_false, gimple_cond_lhs (stmt)); + if (irange::supports_type_p (TREE_TYPE (lhs))) + { + ranger->range_on_edge (predicate->true_range, edge_true, lhs); + ranger->range_on_edge (predicate->false_range, edge_false, rhs); + } + return predicate; } @@ -278,7 +283,7 @@ simplify_using_entry_checks (unswitch_predicate *predicate, && operand_equal_p (gimple_cond_rhs (stmt), TREE_OPERAND (cond, 1), 0)) return true_edge ? boolean_true_node : boolean_false_node; - else + else if (irange::supports_type_p (TREE_TYPE (gimple_cond_lhs (stmt)))) { int_range_max r; irange &parent_range = (true_edge ? parent_predicate->true_range :