From patchwork Thu Oct 20 06:10:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kugan Vivekanandarajah X-Patchwork-Id: 684464 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3szz2g44tJz9s5g for ; Thu, 20 Oct 2016 17:11:06 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=DaJSwZFu; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:references:cc:from:message-id:date:mime-version :in-reply-to:content-type; q=dns; s=default; b=rnaG88seU0ObAwq3Z YHO4REFgWjOZLZFA27vFm8z3Wkj9aKgAtAADxLG22+wPNQz5OLRn/mQyglqnZnoq QBpm+0JvS8m+7fvRJqvUyZrdMIJUrMNcvJRuJOQyqj3y3VfOvl6vGAvSylgRzgX7 skfbz1a0BeFww8YtaPgzEJme+o= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:references:cc:from:message-id:date:mime-version :in-reply-to:content-type; s=default; bh=yDthlFUl98b9kW2s8pH+SZJ 6vKo=; b=DaJSwZFu5/kpR8W0Csd3xyC0JnWxFoaMUDjk7/jtko8BURNeDxEVciY OOLfl4o17lBJhdk56uJM9hpAo8FUi394HKtFKlZoOTGdPmc2Bl0Z1ih70xq3XhZM JInZD/IJshYgnrREXlvz2ShaiTFM1aft8LgfsEJpvM8i/RsosCKs= Received: (qmail 26062 invoked by alias); 20 Oct 2016 06:10:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25365 invoked by uid 89); 20 Oct 2016 06:10:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=4.1 required=5.0 tests=AWL, BAYES_99, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=no version=3.3.2 spammy=*cond, cvt, stupid, CVT X-HELO: mail-pf0-f172.google.com Received: from mail-pf0-f172.google.com (HELO mail-pf0-f172.google.com) (209.85.192.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 20 Oct 2016 06:10:29 +0000 Received: by mail-pf0-f172.google.com with SMTP id s8so29956475pfj.2 for ; Wed, 19 Oct 2016 23:10:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to; bh=JCTiBedoVpz1T2RVdQ2M/TDB2oK/4Z3MFNOzKDazyaI=; b=Q5a2PiMSqh/dv8CzTcvf316KyV45eTPwa4ksTzBMCEbFuLc8mMfzgtJskgZg4marjM 95zMPvJZwLXyv7m5u3f1HHyAqQdm6njPiXiJgJEu8GDRi1h/RCbL3cDKaCXol4s7jYN/ bNoSFtDk7KKnnBuxzLtPpPZBZhtk73g8Y9Ujc6nsi+4AbzFPS/KQru+e+V6NFzfVjcG7 tBPE9ddycQOcvxVNSdGrRLPT7gRLNL/ApZHniHhILXzLfh8uoii05c6udpLFrOFLog4G wzrenzsxglFxnZm0iCGJzQ0NWPLHb4EZf2ci4qJCGGVw+tTxu7wl8ynRuGgvrZyuGfna ZTew== X-Gm-Message-State: AA6/9RlN9wpCLu28RkA0JwFH3T3ZAmFRttiXnZIh6vsGlXzKy2Wfg7axMMAz2IV9zBZ61QjH X-Received: by 10.99.140.12 with SMTP id m12mr15098634pgd.45.1476943827165; Wed, 19 Oct 2016 23:10:27 -0700 (PDT) Received: from [10.1.1.7] (58-6-183-210.dyn.iinet.net.au. [58.6.183.210]) by smtp.gmail.com with ESMTPSA id ah5sm68291389pad.30.2016.10.19.23.10.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Oct 2016 23:10:26 -0700 (PDT) Subject: Re: [PATCH] Simplify conditions in EVRP, handle taken edge To: Andrew Pinski , Christophe Lyon References: Cc: Richard Biener , "gcc-patches@gcc.gnu.org" , Kyrylo Tkachov From: kugan Message-ID: <4a12886e-e839-2547-6127-49a61867a76f@linaro.org> Date: Thu, 20 Oct 2016 17:10:20 +1100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: X-IsSubscribed: yes Hi, On 20/10/16 02:54, Andrew Pinski wrote: > On Wed, Oct 19, 2016 at 1:01 AM, Christophe Lyon > wrote: >> On 18 October 2016 at 09:34, Richard Biener wrote: >>> On Mon, 17 Oct 2016, Richard Biener wrote: >>> >>>> >>>> This refactors propagation vs. substitution and handles condition >>>> simplification properly as well as passing a known taken edge down >>>> to the DOM walker (avoiding useless work and properly handling PHIs). >>>> >>>> If we do all the work it's stupid to not fold away dead code... >>>> >>>> Bootstrap and regtest pending on x86_64-unknown-linux-gnu. >>> >>> The following is what I applied, also fixing a spelling mistake noticed >>> by Bernhard. >>> >> Hi Richard, >> >> This patch is causing regressions on aarch64. These tests now fail: > > So I looked into it and found the testcase themselves need to be changed. > The functions are marked as noinline but not noclone. > For an example: > static void __attribute__((noinline)) > check_args_8 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, > int a8) > .... > Indeed. In test12 and so on, arguments for check_args_8/check_args_24 is now becoming constant which enables ipa-cp to create specialized clones. Though this is good, in order to preserve the tested functionality, we need to add noclone attribute. Here is a patch to do this. Regression tested on aatch64-linux-gnu. Is this OK for trunk? Thanks, Kugan gcc/testsuite/ChangeLog: 2016-10-20 Kugan Vivekanandarajah * gcc.target/aarch64/test_frame_common.h: Add noclone attribute such that cloned verions of tested functions are not created. > Thanks, > Andrew > >> gcc.target/aarch64/test_frame_12.c scan-assembler-times ldp\tx29, >> x30, \\[sp, [0-9]+\\] 1 >> gcc.target/aarch64/test_frame_12.c scan-assembler-times sub\tsp, sp, #[0-9]+ 1 >> gcc.target/aarch64/test_frame_15.c scan-assembler-times stp\tx29, >> x30, \\[sp, [0-9]+\\] 1 >> gcc.target/aarch64/test_frame_15.c scan-assembler-times sub\tsp, sp, #[0-9]+ 1 >> gcc.target/aarch64/test_frame_8.c scan-assembler-times ldr\tx30, >> \\[sp, [0-9]+\\] 1 >> gcc.target/aarch64/test_frame_8.c scan-assembler-times str\tx30, >> \\[sp, [0-9]+\\] 1 >> >> Christophe >> >>> Richard. >>> >>> 2016-10-18 Richard Biener >>> >>> * tree-vrp.c (evrp_dom_walker::before_dom_children): Handle >>> not visited but non-executable predecessors. Return taken edge. >>> Simplify conditions and refactor propagation vs. folding step. >>> >>> * gcc.dg/tree-ssa/pr20318.c: Disable EVRP. >>> * gcc.dg/tree-ssa/pr21001.c: Likewise. >>> * gcc.dg/tree-ssa/pr21090.c: Likewise. >>> * gcc.dg/tree-ssa/pr21294.c: Likewise. >>> * gcc.dg/tree-ssa/pr21563.c: Likewise. >>> * gcc.dg/tree-ssa/pr23744.c: Likewise. >>> * gcc.dg/tree-ssa/pr25382.c: Likewise. >>> * gcc.dg/tree-ssa/pr68431.c: Likewise. >>> * gcc.dg/tree-ssa/vrp03.c: Likewise. >>> * gcc.dg/tree-ssa/vrp06.c: Likewise. >>> * gcc.dg/tree-ssa/vrp07.c: Likewise. >>> * gcc.dg/tree-ssa/vrp09.c: Likewise. >>> * gcc.dg/tree-ssa/vrp19.c: Likewise. >>> * gcc.dg/tree-ssa/vrp20.c: Likewise. >>> * gcc.dg/tree-ssa/vrp92.c: Likewise. >>> * gcc.dg/pr68217.c: Likewise. >>> * gcc.dg/predict-9.c: Likewise. >>> * gcc.dg/tree-prof/val-prof-5.c: Adjust. >>> * gcc.dg/predict-1.c: Likewise. >>> >>> >>> >>> Index: gcc/tree-vrp.c >>> =================================================================== >>> --- gcc/tree-vrp.c (revision 241242) >>> +++ gcc/tree-vrp.c (working copy) >>> @@ -10741,12 +10741,13 @@ evrp_dom_walker::before_dom_children (ba >>> gimple_stmt_iterator gsi; >>> edge e; >>> edge_iterator ei; >>> - bool has_unvisived_preds = false; >>> + bool has_unvisited_preds = false; >>> >>> FOR_EACH_EDGE (e, ei, bb->preds) >>> - if (!(e->src->flags & BB_VISITED)) >>> + if (e->flags & EDGE_EXECUTABLE >>> + && !(e->src->flags & BB_VISITED)) >>> { >>> - has_unvisived_preds = true; >>> + has_unvisited_preds = true; >>> break; >>> } >>> >>> @@ -10756,7 +10757,7 @@ evrp_dom_walker::before_dom_children (ba >>> gphi *phi = gpi.phi (); >>> tree lhs = PHI_RESULT (phi); >>> value_range vr_result = VR_INITIALIZER; >>> - if (!has_unvisived_preds >>> + if (!has_unvisited_preds >>> && stmt_interesting_for_vrp (phi)) >>> extract_range_from_phi_node (phi, &vr_result); >>> else >>> @@ -10764,81 +10765,90 @@ evrp_dom_walker::before_dom_children (ba >>> update_value_range (lhs, &vr_result); >>> } >>> >>> + edge taken_edge = NULL; >>> + >>> /* Visit all other stmts and discover any new VRs possible. */ >>> for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) >>> { >>> gimple *stmt = gsi_stmt (gsi); >>> - edge taken_edge; >>> tree output = NULL_TREE; >>> gimple *old_stmt = stmt; >>> bool was_noreturn = (is_gimple_call (stmt) >>> && gimple_call_noreturn_p (stmt)); >>> >>> - /* TODO, if found taken_edge, we should visit (return it) and travel >>> - again to improve VR as done in DOM/SCCVN optimizations. It should >>> - be done carefully as stmts might prematurely leave a BB like >>> - in EH. */ >>> - if (stmt_interesting_for_vrp (stmt)) >>> + if (gcond *cond = dyn_cast (stmt)) >>> + { >>> + vrp_visit_cond_stmt (cond, &taken_edge); >>> + if (taken_edge) >>> + { >>> + if (taken_edge->flags & EDGE_TRUE_VALUE) >>> + gimple_cond_make_true (cond); >>> + else if (taken_edge->flags & EDGE_FALSE_VALUE) >>> + gimple_cond_make_false (cond); >>> + else >>> + gcc_unreachable (); >>> + } >>> + } >>> + else if (stmt_interesting_for_vrp (stmt)) >>> { >>> + edge taken_edge; >>> value_range vr = VR_INITIALIZER; >>> extract_range_from_stmt (stmt, &taken_edge, &output, &vr); >>> if (output >>> && (vr.type == VR_RANGE || vr.type == VR_ANTI_RANGE)) >>> - update_value_range (output, &vr); >>> - else >>> - set_defs_to_varying (stmt); >>> - >>> - /* Try folding stmts with the VR discovered. */ >>> - bool did_replace >>> - = replace_uses_in (stmt, >>> - op_with_constant_singleton_value_range); >>> - if (fold_stmt (&gsi, follow_single_use_edges) >>> - || did_replace) >>> - update_stmt (gsi_stmt (gsi)); >>> - >>> - if (did_replace) >>> { >>> - /* If we cleaned up EH information from the statement, >>> - remove EH edges. */ >>> - if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt)) >>> - bitmap_set_bit (need_eh_cleanup, bb->index); >>> - >>> - /* If we turned a not noreturn call into a noreturn one >>> - schedule it for fixup. */ >>> - if (!was_noreturn >>> - && is_gimple_call (stmt) >>> - && gimple_call_noreturn_p (stmt)) >>> - stmts_to_fixup.safe_push (stmt); >>> + update_value_range (output, &vr); >>> >>> - if (gimple_assign_single_p (stmt)) >>> + /* Set the SSA with the value range. */ >>> + if (INTEGRAL_TYPE_P (TREE_TYPE (output))) >>> { >>> - tree rhs = gimple_assign_rhs1 (stmt); >>> - if (TREE_CODE (rhs) == ADDR_EXPR) >>> - recompute_tree_invariant_for_addr_expr (rhs); >>> + value_range *vr = get_value_range (output); >>> + >>> + if ((vr->type == VR_RANGE >>> + || vr->type == VR_ANTI_RANGE) >>> + && (TREE_CODE (vr->min) == INTEGER_CST) >>> + && (TREE_CODE (vr->max) == INTEGER_CST)) >>> + set_range_info (output, vr->type, vr->min, vr->max); >>> } >>> } >>> + else >>> + set_defs_to_varying (stmt); >>> + } >>> + else >>> + set_defs_to_varying (stmt); >>> >>> - def_operand_p def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF); >>> - /* Set the SSA with the value range. */ >>> - if (def_p >>> - && TREE_CODE (DEF_FROM_PTR (def_p)) == SSA_NAME >>> - && INTEGRAL_TYPE_P (TREE_TYPE (DEF_FROM_PTR (def_p)))) >>> - { >>> - tree def = DEF_FROM_PTR (def_p); >>> - value_range *vr = get_value_range (def); >>> + /* Try folding stmts with the VR discovered. */ >>> + bool did_replace >>> + = replace_uses_in (stmt, op_with_constant_singleton_value_range); >>> + if (fold_stmt (&gsi, follow_single_use_edges) >>> + || did_replace) >>> + update_stmt (gsi_stmt (gsi)); >>> >>> - if ((vr->type == VR_RANGE >>> - || vr->type == VR_ANTI_RANGE) >>> - && (TREE_CODE (vr->min) == INTEGER_CST) >>> - && (TREE_CODE (vr->max) == INTEGER_CST)) >>> - set_range_info (def, vr->type, vr->min, vr->max); >>> + if (did_replace) >>> + { >>> + /* If we cleaned up EH information from the statement, >>> + remove EH edges. */ >>> + if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt)) >>> + bitmap_set_bit (need_eh_cleanup, bb->index); >>> + >>> + /* If we turned a not noreturn call into a noreturn one >>> + schedule it for fixup. */ >>> + if (!was_noreturn >>> + && is_gimple_call (stmt) >>> + && gimple_call_noreturn_p (stmt)) >>> + stmts_to_fixup.safe_push (stmt); >>> + >>> + if (gimple_assign_single_p (stmt)) >>> + { >>> + tree rhs = gimple_assign_rhs1 (stmt); >>> + if (TREE_CODE (rhs) == ADDR_EXPR) >>> + recompute_tree_invariant_for_addr_expr (rhs); >>> } >>> } >>> - else >>> - set_defs_to_varying (stmt); >>> } >>> bb->flags |= BB_VISITED; >>> - return NULL; >>> + >>> + return taken_edge; >>> } >>> >>> /* Restore/pop VRs valid only for BB when we leave BB. */ >>> Index: gcc/testsuite/gcc.dg/pr68217.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/pr68217.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/pr68217.c (working copy) >>> @@ -1,6 +1,5 @@ >>> - >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> int foo (void) >>> { >>> Index: gcc/testsuite/gcc.dg/predict-1.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/predict-1.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/predict-1.c (working copy) >>> @@ -23,4 +23,4 @@ void foo (int bound) >>> } >>> } >>> >>> -/* { dg-final { scan-tree-dump-times "guess loop iv compare heuristics of edge\[^:\]*: 2.0%" 5 "profile_estimate"} } */ >>> +/* { dg-final { scan-tree-dump-times "guess loop iv compare heuristics of edge\[^:\]*: 2.0%" 4 "profile_estimate"} } */ >>> Index: gcc/testsuite/gcc.dg/predict-9.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/predict-9.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/predict-9.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-profile_estimate" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-profile_estimate" } */ >>> >>> extern int global; >>> extern int global2; >>> Index: gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c (working copy) >>> @@ -6,7 +6,7 @@ main() >>> { >>> int i; >>> for (i = 0; i < 1000; i++) >>> - if (a[i]) >>> + if (a[i] != 1) >>> a[i]/=b; >>> else >>> a[i]/=b; >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr20318.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr20318.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr20318.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile { target { ! keeps_null_pointer_checks } } } */ >>> -/* { dg-options "-O2 -fdump-tree-original -fdump-tree-vrp1 -fdelete-null-pointer-checks" } */ >>> +/* { dg-options "-O2 -fdump-tree-original -fdump-tree-vrp1 -fdelete-null-pointer-checks -fdisable-tree-evrp" } */ >>> >>> extern int* f(int) __attribute__((returns_nonnull)); >>> extern void eliminate (); >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr21001.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr21001.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr21001.c (working copy) >>> @@ -5,7 +5,7 @@ >>> range information out of the conditional. */ >>> >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-dominator-opts -fno-tree-fre -fdump-tree-vrp1-details" } */ >>> +/* { dg-options "-O2 -fno-tree-dominator-opts -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1-details" } */ >>> >>> int >>> foo (int a) >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr21090.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr21090.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr21090.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1 -fdelete-null-pointer-checks" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1 -fdelete-null-pointer-checks" } */ >>> >>> int g, h; >>> >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr21294.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr21294.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr21294.c (working copy) >>> @@ -4,7 +4,7 @@ >>> allows us to eliminate the second "if" statement. */ >>> >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ >>> +/* { dg-options "-O2 -fno-tree-dominator-opts -fdisable-tree-evrp -fdump-tree-vrp1-details" } */ >>> >>> struct f { >>> int i; >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr21563.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr21563.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr21563.c (working copy) >>> @@ -2,7 +2,7 @@ >>> Make sure VRP folds the second "if" statement. */ >>> >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ >>> +/* { dg-options "-O2 -fno-tree-dominator-opts -fdisable-tree-evrp -fdump-tree-vrp1-details" } */ >>> >>> int >>> foo (int a) >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr23744.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr23744.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr23744.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-vrp1" } */ >>> +/* { dg-options "-O2 -fno-tree-ccp -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> void h (void); >>> >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr25382.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr25382.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr25382.c (working copy) >>> @@ -3,7 +3,7 @@ >>> Check that VRP now gets ranges from BIT_AND_EXPRs. */ >>> >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-vrp1" } */ >>> +/* { dg-options "-O2 -fno-tree-ccp -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> int >>> foo (int a) >>> Index: gcc/testsuite/gcc.dg/tree-ssa/pr68431.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/pr68431.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/pr68431.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* PR tree-optimization/68431 */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1-details" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1-details" } */ >>> >>> unsigned int x = 1; >>> int >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp03.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp03.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp03.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> struct A >>> { >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp06.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp06.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp06.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> int baz (void); >>> >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp07.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp07.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp07.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-fre -fdump-tree-vrp1-details -fdelete-null-pointer-checks" } */ >>> +/* { dg-options "-O2 -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1-details -fdelete-null-pointer-checks" } */ >>> >>> int >>> foo (int i, int *p) >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp09.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp09.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp09.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fno-tree-fre -fdump-tree-vrp1 -std=gnu89" } */ >>> +/* { dg-options "-O2 -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1 -std=gnu89" } */ >>> >>> foo (int *p) >>> { >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp19.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp19.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp19.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-fwrapv -O1 -ftree-vrp -fdump-tree-vrp1" } */ >>> +/* { dg-options "-fwrapv -O1 -ftree-vrp -fdisable-tree-evrp -fdump-tree-vrp1" } */ >>> >>> #include >>> extern void abort (); >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp20.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp20.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp20.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-fwrapv -O1 -fno-tree-fre -ftree-vrp -fdump-tree-vrp1" } */ >>> +/* { dg-options "-fwrapv -O1 -fno-tree-fre -fdisable-tree-evrp -ftree-vrp -fdump-tree-vrp1" } */ >>> >>> extern void abort (); >>> extern void exit (int); >>> Index: gcc/testsuite/gcc.dg/tree-ssa/vrp92.c >>> =================================================================== >>> --- gcc/testsuite/gcc.dg/tree-ssa/vrp92.c (revision 241241) >>> +++ gcc/testsuite/gcc.dg/tree-ssa/vrp92.c (working copy) >>> @@ -1,5 +1,5 @@ >>> /* { dg-do compile } */ >>> -/* { dg-options "-O2 -fdump-tree-vrp1-details -fdisable-tree-ethread" } */ >>> +/* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1-details -fdisable-tree-ethread" } */ >>> >>> void bar (void); >>> int foo (int i, int j) diff --git a/gcc/testsuite/gcc.target/aarch64/test_frame_common.h b/gcc/testsuite/gcc.target/aarch64/test_frame_common.h index d7fed25..c63fbce 100644 --- a/gcc/testsuite/gcc.target/aarch64/test_frame_common.h +++ b/gcc/testsuite/gcc.target/aarch64/test_frame_common.h @@ -2,7 +2,7 @@ extern void abort (); #define CVT(v) ((unsigned char)(v)) -static void __attribute__((noinline)) +static void __attribute__((noinline, noclone)) check_args_8 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { @@ -18,7 +18,7 @@ check_args_8 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, abort (); } -static void __attribute__((noinline)) +static void __attribute__((noinline, noclone)) check_args_24 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { @@ -36,7 +36,7 @@ check_args_24 (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, abort (); } -void __attribute__ ((noinline)) +void __attribute__ ((noinline, noclone)) initialize_array (unsigned char *a, int len) { int i;