From patchwork Tue Oct 20 21:10:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847901 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3FB6417D5 for ; Tue, 20 Oct 2020 21:10:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 060DA2237B for ; Tue, 20 Oct 2020 21:10:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MgWehZkn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438658AbgJTVK1 (ORCPT ); Tue, 20 Oct 2020 17:10:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVK1 (ORCPT ); Tue, 20 Oct 2020 17:10:27 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B6E1C0613CE for ; Tue, 20 Oct 2020 14:10:27 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id o18so204944edq.4 for ; Tue, 20 Oct 2020 14:10:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x36J6Qfw+zbVTS8VqSerMeYg0LTkmuxAfxnd3jpqPaw=; b=MgWehZknCCYUyH2RPZdODI7TE9uQwSBLNTWn2rbFON/jIFz1Q4fDUmgL1U5UiRrWkp iu6I0GhX57JBr7IDy63D8sQsAn69lLPORjjvxslzrbNohKFfZDYv/mN2j9m8AqxyHBS+ vrgVYW1PeGNykiE7qnrY+hI7OKU1CtsjAa17zUljSsC6MtStVgoV5YF03kqAcxJa0qXn jKTo9Gxoe4elx723O+yXR6x24FDRdarbufDmxxcJ4jW5tAbBRoZMSU5G/8QCgQ66cl2t ei53pmklU2bLBcn2HxzmkTsU//ftoxudKh7FE8A+UgthMrP0eG4xfSYfsJ+3YeXJfHHH /j+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=x36J6Qfw+zbVTS8VqSerMeYg0LTkmuxAfxnd3jpqPaw=; b=EQkDscqxgXlNiXRszcIvHnPl7QR0+fezW8xxUgMaVamKwT5fUNTb8YF2QdkT0OZ8j3 nmL8reVqhSUjnII+nkKI4iaJrGzaYX+FH36A9T1Narek32oVCjMZycVxWlH9UIqvfVAo o6lm9sjdiXSgDn9U/d8sRbi9d1uJ0tUpzzgomSaT1defipZGObrE6w8UXot20c3wh888 LhwaFIjEkM/wdl2F1HCQfFXwqF7sVqIpqr9OBhtDXBw6oeF2NJCV+zg35hgv8GG0DEty Ow5epecavy7w6E2niespNjO6jOaIN3ErxuyIYJExecCjJBAjuGEoewiE17SufAAE1o9y Z8jg== X-Gm-Message-State: AOAM530Jy5Bu4Dko+tKmh/rDsroBoTM3JRl9u/3xnvWerGIFIxw8GYva 1GhiwVXpvlx+VQwO10Ik/YL91LExIZw= X-Google-Smtp-Source: ABdhPJwjrgozKBi5HQOUZ/M365B82SjF9FL9Wk5lh2QPUuX3M/F7D/s6LdMLGxjs0mem8riLeADURQ== X-Received: by 2002:aa7:da48:: with SMTP id w8mr4924926eds.220.1603228225250; Tue, 20 Oct 2020 14:10:25 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:24 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 01/22] add testcases about OP_ADD & OP_SUB simplifications Date: Tue, 20 Oct 2020 23:10:00 +0200 Message-Id: <20201020211021.82394-2-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Add some testcases about basic simplifications of additions and subtractions. Signed-off-by: Luc Van Oostenryck --- validation/optim/canonical-sub-cte.c | 10 ++++++++++ validation/optim/reassoc-op-op1.c | 15 +++++++++++++++ validation/optim/simplify-add-neg.c | 10 ++++++++++ validation/optim/simplify-cte-sub-addl.c | 10 ++++++++++ validation/optim/simplify-cte-sub-addr.c | 10 ++++++++++ validation/optim/simplify-cte-sub-subr.c | 10 ++++++++++ validation/optim/simplify-neg-add.c | 10 ++++++++++ validation/optim/simplify-same-add-subl.c | 16 ++++++++++++++++ validation/optim/simplify-same-add-subr.c | 16 ++++++++++++++++ validation/optim/simplify-same-addl-sub.c | 10 ++++++++++ validation/optim/simplify-same-sub-addl.c | 10 ++++++++++ validation/optim/simplify-same-subl-add.c | 12 ++++++++++++ validation/optim/simplify-same-subr-add.c | 12 ++++++++++++ validation/optim/simplify-sub-neg.c | 10 ++++++++++ validation/optim/simplify-zero-sub.c | 10 ++++++++++ 15 files changed, 171 insertions(+) create mode 100644 validation/optim/canonical-sub-cte.c create mode 100644 validation/optim/reassoc-op-op1.c create mode 100644 validation/optim/simplify-add-neg.c create mode 100644 validation/optim/simplify-cte-sub-addl.c create mode 100644 validation/optim/simplify-cte-sub-addr.c create mode 100644 validation/optim/simplify-cte-sub-subr.c create mode 100644 validation/optim/simplify-neg-add.c create mode 100644 validation/optim/simplify-same-add-subl.c create mode 100644 validation/optim/simplify-same-add-subr.c create mode 100644 validation/optim/simplify-same-addl-sub.c create mode 100644 validation/optim/simplify-same-sub-addl.c create mode 100644 validation/optim/simplify-same-subl-add.c create mode 100644 validation/optim/simplify-same-subr-add.c create mode 100644 validation/optim/simplify-sub-neg.c create mode 100644 validation/optim/simplify-zero-sub.c diff --git a/validation/optim/canonical-sub-cte.c b/validation/optim/canonical-sub-cte.c new file mode 100644 index 000000000000..223be96fa5a5 --- /dev/null +++ b/validation/optim/canonical-sub-cte.c @@ -0,0 +1,10 @@ +int sub_cte(int x) { return (x - 1) != (x + -1); } + +/* + * check-name: canonical-sub-cte + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: ret\\..*\\$0 + */ diff --git a/validation/optim/reassoc-op-op1.c b/validation/optim/reassoc-op-op1.c new file mode 100644 index 000000000000..aa7092ff57a0 --- /dev/null +++ b/validation/optim/reassoc-op-op1.c @@ -0,0 +1,15 @@ +int foo(int x, int *ptr) +{ + int t = x + 1; + *ptr = t; + return t + -1; +} + +/* + * check-name: reassoc-op-op1 + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-pattern(1): add\\. + */ diff --git a/validation/optim/simplify-add-neg.c b/validation/optim/simplify-add-neg.c new file mode 100644 index 000000000000..19b64b096567 --- /dev/null +++ b/validation/optim/simplify-add-neg.c @@ -0,0 +1,10 @@ +int add_neg(int x, int y) { return x + -y; } + +/* + * check-name: simplify-add-neg + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: sub\\..*%arg1, %arg2 + */ diff --git a/validation/optim/simplify-cte-sub-addl.c b/validation/optim/simplify-cte-sub-addl.c new file mode 100644 index 000000000000..49e510062c03 --- /dev/null +++ b/validation/optim/simplify-cte-sub-addl.c @@ -0,0 +1,10 @@ +int cte_sub_addl(int x) { return (1 - x) + 1; } + +/* + * check-name: simplify-cte-sub-addl + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: sub\\..*\\$2, %arg1 + */ diff --git a/validation/optim/simplify-cte-sub-addr.c b/validation/optim/simplify-cte-sub-addr.c new file mode 100644 index 000000000000..81f5b34551c6 --- /dev/null +++ b/validation/optim/simplify-cte-sub-addr.c @@ -0,0 +1,10 @@ +int cte_sub_addr(int x) { return 2 - (x + 1); } + +/* + * check-name: simplify-cte-sub-addr + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: sub\\..*\\$1, %arg1 + */ diff --git a/validation/optim/simplify-cte-sub-subr.c b/validation/optim/simplify-cte-sub-subr.c new file mode 100644 index 000000000000..950b233e60c3 --- /dev/null +++ b/validation/optim/simplify-cte-sub-subr.c @@ -0,0 +1,10 @@ +int cte_sub_subr(int x) { return 1 - (1 - x); } + +/* + * check-name: simplify-cte-sub-subr + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: ret\\..* %arg1 + */ diff --git a/validation/optim/simplify-neg-add.c b/validation/optim/simplify-neg-add.c new file mode 100644 index 000000000000..66a820f28069 --- /dev/null +++ b/validation/optim/simplify-neg-add.c @@ -0,0 +1,10 @@ +int neg_add(int x, int y) { return -x + y; } + +/* + * check-name: simplify-neg-add + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: sub\\..*%arg2, %arg1 + */ diff --git a/validation/optim/simplify-same-add-subl.c b/validation/optim/simplify-same-add-subl.c new file mode 100644 index 000000000000..1f17ef0b968e --- /dev/null +++ b/validation/optim/simplify-same-add-subl.c @@ -0,0 +1,16 @@ +int add_subl(int x, int y) { return (x + y) - x; } + +/* + * check-name: simplify-same-add-subl + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-start +add_subl: +.L0: + + ret.32 %arg2 + + + * check-output-end + */ diff --git a/validation/optim/simplify-same-add-subr.c b/validation/optim/simplify-same-add-subr.c new file mode 100644 index 000000000000..e8540703ee7d --- /dev/null +++ b/validation/optim/simplify-same-add-subr.c @@ -0,0 +1,16 @@ +int add_subr(int x, int y) { return (x + y) - y; } + +/* + * check-name: simplify-same-add-subr + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-start +add_subr: +.L0: + + ret.32 %arg1 + + + * check-output-end + */ diff --git a/validation/optim/simplify-same-addl-sub.c b/validation/optim/simplify-same-addl-sub.c new file mode 100644 index 000000000000..51d2b07966f4 --- /dev/null +++ b/validation/optim/simplify-same-addl-sub.c @@ -0,0 +1,10 @@ +int foo(int x, int y) { return x + (y - x); } + +/* + * check-name: simplify-same-addl-sub + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: ret\\..*%arg2 + */ diff --git a/validation/optim/simplify-same-sub-addl.c b/validation/optim/simplify-same-sub-addl.c new file mode 100644 index 000000000000..78f217399e50 --- /dev/null +++ b/validation/optim/simplify-same-sub-addl.c @@ -0,0 +1,10 @@ +int foo(int x, int y) { return (x - y) + y; } + +/* + * check-name: simplify-same-sub-addl + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: ret\\..*%arg1 + */ diff --git a/validation/optim/simplify-same-subl-add.c b/validation/optim/simplify-same-subl-add.c new file mode 100644 index 000000000000..dbc0fe97f126 --- /dev/null +++ b/validation/optim/simplify-same-subl-add.c @@ -0,0 +1,12 @@ +int subl_add(int x, int y) { return x - (x + y); } + +/* + * check-name: simplify-same-subl-add + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: neg\\..* %arg2 + * check-output-excludes: add\\. + * check-output-excludes: sub\\. + */ diff --git a/validation/optim/simplify-same-subr-add.c b/validation/optim/simplify-same-subr-add.c new file mode 100644 index 000000000000..bafd2643bfd0 --- /dev/null +++ b/validation/optim/simplify-same-subr-add.c @@ -0,0 +1,12 @@ +int subr_add(int x, int y) { return x - (y + x); } + +/* + * check-name: simplify-same-subr-add + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: neg\\..* %arg2 + * check-output-excludes: add\\. + * check-output-excludes: sub\\. + */ diff --git a/validation/optim/simplify-sub-neg.c b/validation/optim/simplify-sub-neg.c new file mode 100644 index 000000000000..b6fcc2baabec --- /dev/null +++ b/validation/optim/simplify-sub-neg.c @@ -0,0 +1,10 @@ +int sub_neg(int x, int y) { return x - -y; } + +/* + * check-name: simplify-sub-neg + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: add\\..*%arg., %arg. + */ diff --git a/validation/optim/simplify-zero-sub.c b/validation/optim/simplify-zero-sub.c new file mode 100644 index 000000000000..cc8fe7a3159b --- /dev/null +++ b/validation/optim/simplify-zero-sub.c @@ -0,0 +1,10 @@ +int zero_sub(int x) { return 0 - x; } + +/* + * check-name: simplify-zero-sub + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-contains: neg\\..* %arg1 + */ From patchwork Tue Oct 20 21:10:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847903 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 957231580 for ; Tue, 20 Oct 2020 21:10:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E9C62237B for ; Tue, 20 Oct 2020 21:10:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e1JFuP+4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438659AbgJTVK2 (ORCPT ); Tue, 20 Oct 2020 17:10:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVK2 (ORCPT ); Tue, 20 Oct 2020 17:10:28 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3046C0613CE for ; Tue, 20 Oct 2020 14:10:27 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id lw21so4862307ejb.6 for ; Tue, 20 Oct 2020 14:10:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TCvya167EhdKOgB5tHySOUm4n1lPWmrVXQ8t80GBlLA=; b=e1JFuP+4cMPxiDvftfjcuNDIInqjUfbECJE1OvMFh6LJSRYwVWq54cbtGtwrWFZJLG aTdMUUrJ0iklL95R64UwRLNSFjSsyYTTCcrMFzaC5X/kQg5hUWCn4gLuq1IsCNXd4j83 wEvx6IuoqqrVaY0ZgS6KSmZBU1koGFGV3VstCn5bsFE2SvEkkFygfdmBwxu1VtL6TAKD anJh7OtmNZvPAOGmfGiQxuByJw6yr49qohJhXZ+6jvKjgjUCSdcRFDiYqPLF4UrSUCFN P53FxfLwybO0nMc3yHhZYzAHGPYJRWS3L31TLSXvPrswNLHF9MWMlK36dNdVt/tqsiOq YaJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TCvya167EhdKOgB5tHySOUm4n1lPWmrVXQ8t80GBlLA=; b=MdahetS7SWIp10Pk/lkcTyCKgRAijhq/+qLOazbPkr/0h+uAe9JRT17Z2S0PUIXDNf sVnBfKrD4RA74dfAMDp+dGzvGYbGXld5/BT6/fg5R5sp9GcYcKRH5MewOjKRdbSp+CFE tjerdE6apEE77Y2TcUWNA+RIFkt7ogX7l4LYIpN36HjUbapKqDm5iWEdK64iNFh26nRQ 2axOfW/naN9d25Btwz7wdrbH8osJiPUf7YM5o/WHaQQkqw9FNwOtQOJsjXUDGs032tIr 9ZQ6J3aU8Npa+T5y4IwW6i+BpCrU/Lpm5sxoGxULjoPMnO0dGt7zzfHGDjLtrTMlWXkP WYSw== X-Gm-Message-State: AOAM533xYqGznqzfVAFSxj+LbMD5Wzk/yQTdlvJxm9ILsnCOfXYR89IN BjaFEuS1U1V7EZt4RV8DHvruwnZioBA= X-Google-Smtp-Source: ABdhPJyxtLxPJwaDIJdYf1dXdfMD3Ave7Jh301/ywgWI05rs08s2y/w1eYB7NAj/LLeFMSuHN4zd9Q== X-Received: by 2002:a17:906:c293:: with SMTP id r19mr89660ejz.63.1603228226212; Tue, 20 Oct 2020 14:10:26 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:25 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 02/22] let switch_pseudo() return REPEAT_CSE Date: Tue, 20 Oct 2020 23:10:01 +0200 Message-Id: <20201020211021.82394-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org It make some uses easier and more compact. Signed-off-by: Luc Van Oostenryck --- simplify.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 15452a585598..edef3a7e5c1e 100644 --- a/simplify.c +++ b/simplify.c @@ -1202,7 +1202,7 @@ static int simplify_binop(struct instruction *insn) return 0; } -static void switch_pseudo(struct instruction *insn1, pseudo_t *pp1, struct instruction *insn2, pseudo_t *pp2) +static int switch_pseudo(struct instruction *insn1, pseudo_t *pp1, struct instruction *insn2, pseudo_t *pp2) { pseudo_t p1 = *pp1, p2 = *pp2; @@ -1210,6 +1210,7 @@ static void switch_pseudo(struct instruction *insn1, pseudo_t *pp1, struct instr use_pseudo(insn2, p1, pp2); remove_usage(p1, pp1); remove_usage(p2, pp2); + return REPEAT_CSE; } static int canonical_order(pseudo_t p1, pseudo_t p2) From patchwork Tue Oct 20 21:10:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847905 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E61F415E6 for ; Tue, 20 Oct 2020 21:10:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BBE3C2237B for ; Tue, 20 Oct 2020 21:10:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PicKUt09" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438660AbgJTVK3 (ORCPT ); Tue, 20 Oct 2020 17:10:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45930 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVK3 (ORCPT ); Tue, 20 Oct 2020 17:10:29 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C615AC0613CE for ; Tue, 20 Oct 2020 14:10:28 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id l16so209762eds.3 for ; Tue, 20 Oct 2020 14:10:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DjEYSyEHP/cCAYgYjJuRqsmYdgzPPhAhF/vF7dRrgiE=; b=PicKUt09RWEe/y1JQnt2NQ/5+typVBlinVH1yW6eiVJ4Kw52chCGAtdum1AenFRfzq hvsSu2KkwDWKsV/iHRhtipZZIepXUIb6KrZ/cgdSCkQct6HaUbEBmLXkdiYeuUEco3DY ryz+pm2LTjvZQ10nXVZAbDt3EaN8Z5CA6198AtbiowIrJHL+TeMYfZR6DXEqAQJuDuwc UwkxoCzUJxQeOAAqLVwCDFVJT0sW/eZU0t3vZMNIkCIeMpZSQAbJiYP/gv+VBURMN3pc OMTVivGQ276FBmjA4wrZ8TuMsEwveMayT1mEtcWjXAsPrHGvUdZZSKB7wf3RnSlKbZ85 rStQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DjEYSyEHP/cCAYgYjJuRqsmYdgzPPhAhF/vF7dRrgiE=; b=Nu3uWBiHj3EEx6hRdOPuPqW2O/+vYAkUWKKeU9mcQStx2oQEM9sIUOpPExMZYn/+UY O8MYNzPTxrMckF6wVSJ6uzMfZG09VRe/IjDlxK7Go4QDWNe276eivkMzSS5n6OzLrjU/ yw4hTc52RC2oiOZcuhtdB4M/Jworux06xyIswl3dU0CUitPTjkNbvLn8oCS/9tnh4Zyo joZlJafdMz6Ps1e5T9eeNWvpYt0YMoQoQgH8uWLYPVKdlMrZlbq8cNYtZBAOhzGfvP8N 7P5VqdgofzTmb+BWe7I4QYu4QVVDwOjJSVGsOgbrQ1fc9/gWzpuU3yfIPtvWDtEWxtTW tD0g== X-Gm-Message-State: AOAM532P3zr/DdkZF4EzyhdQ6w6wXePDnyCJ8eE9DhPcRt0357DwntLz u35zVPI4ux4bhSoTWjsZR8m6cPEQia8= X-Google-Smtp-Source: ABdhPJyCSMRanzq68Awbsa+tdXSknbuHzl6+nLu1W17cPm6Muezj9cLc9wcez1yZ3u9kpu/C6kzvJQ== X-Received: by 2002:a50:8ad4:: with SMTP id k20mr4909149edk.385.1603228227233; Tue, 20 Oct 2020 14:10:27 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:26 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 03/22] extract eval_op() from eval_insn() Date: Tue, 20 Oct 2020 23:10:02 +0200 Message-Id: <20201020211021.82394-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org eval_insn() can be handy when there is an existing instruction to evaluate but it can happen that there isn't one, only pseudos. Allow to reuse the evaluation code by using a new API: eval_op() extracted from eval_insn() and taking all its input as arguments (opcode, size, src1 & src2). Signed-off-by: Luc Van Oostenryck --- simplify.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/simplify.c b/simplify.c index edef3a7e5c1e..ac27debfcefb 100644 --- a/simplify.c +++ b/simplify.c @@ -516,12 +516,11 @@ static unsigned int operand_size(struct instruction *insn, pseudo_t pseudo) return size; } -static pseudo_t eval_insn(struct instruction *insn) +static pseudo_t eval_op(int op, unsigned size, pseudo_t src1, pseudo_t src2) { /* FIXME! Verify signs and sizes!! */ - unsigned int size = insn->size; - long long left = insn->src1->value; - long long right = insn->src2->value; + long long left = src1->value; + long long right = src2->value; unsigned long long ul, ur; long long res, mask, bits; @@ -535,7 +534,7 @@ static pseudo_t eval_insn(struct instruction *insn) ul = left & bits; ur = right & bits; - switch (insn->opcode) { + switch (op) { case OP_ADD: res = left + right; break; @@ -754,6 +753,11 @@ static int simplify_mask_shift(struct instruction *sh, unsigned long long mask) return 0; } +static pseudo_t eval_insn(struct instruction *insn) +{ + return eval_op(insn->opcode, insn->size, insn->src1, insn->src2); +} + static long long check_shift_count(struct instruction *insn, unsigned long long uval) { unsigned int size = insn->size; From patchwork Tue Oct 20 21:10:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847909 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 075ED1580 for ; Tue, 20 Oct 2020 21:10:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D18DA222C8 for ; Tue, 20 Oct 2020 21:10:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e7tnwsQo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438662AbgJTVKb (ORCPT ); Tue, 20 Oct 2020 17:10:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVKb (ORCPT ); Tue, 20 Oct 2020 17:10:31 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7EA2CC0613CE for ; Tue, 20 Oct 2020 14:10:29 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id dt13so4830325ejb.12 for ; Tue, 20 Oct 2020 14:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UkxCapVHmDmRNvpwtm3Z1XxedW1R1VJGl562Onw+jJk=; b=e7tnwsQomB6qJ9R8jzTVGSa6PYayR+oW5CzM/ki8yjDS5YbkqFhIQScOaEqjURj5br ryV9uSKVYWJzE4rdzAiOwwvQmxXO4w1XkU4OtVEVIWY2yebVuKGf5ieuF4dt7MnHdUt/ YrWgDNzAtC6BfU5RQRxf+HDOvrRMS5mjcaXnyX37YGDvNzzx+F25azOB/FQH7Tlb+72a stMvIPZamOSkkO2veAqEgdtGEK2HBdl2RYAIzFv6oFS1xhMlKUATrpHn4kXGMTL0Nkv0 WKYaldlhyvqTy2+6V1Saf9LUNA/mI19cLBY+XGJEpby5mnPkToUBVuvZKPIxDboo70bg rawQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UkxCapVHmDmRNvpwtm3Z1XxedW1R1VJGl562Onw+jJk=; b=RJidyg/CWZSRgZKcWCmJEWqeL0zXtBYw+DQFPGRe9Y4C93A2DauM03aBdN4OyB22my u30kqhsfdr/7NLdaEUEmhXeNlufXAMCkU/yFYI3c035uGNjITMjut1d5NP5Rx74IWSqy Gfz+7G4gdXtsPa4j44rQm8TKtRoRgAr8GTl2KVaL9suSrwEaehtMf6Z6RBgZb5l//XoJ 504r3WC1D22HEdXYa8QidZg11z5x25oxslzN3ESH8nwKlVa0KIgd6G/uFU0DkLuSLW0k MaGhD2jIxot4jjzLJrz5on5p6ynpQ0m9tpfYB52vWw0ose7HS9dRE2+rsyzFnmJCxAil YSkA== X-Gm-Message-State: AOAM5314RI4HTu8VAM4o9L/ecgrIYYwlcqLoK2b7IVfhAcd2gCdklyRA B0v7LgQ7NGhGVnpaOfRmHox34Ye9E+g= X-Google-Smtp-Source: ABdhPJwatoLpDbbzPLKHXYkgcTX7AROi94Fzgd8ggsN2rMRoG6qClqgo8NDe3M2X8uHSJiVl9yHbhA== X-Received: by 2002:a17:906:649a:: with SMTP id e26mr71827ejm.415.1603228228002; Tue, 20 Oct 2020 14:10:28 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:27 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 04/22] unop: add helper eval_unop() Date: Tue, 20 Oct 2020 23:10:03 +0200 Message-Id: <20201020211021.82394-5-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Currently, eval_op() only do the evaluation of binops but unops need sometimes to be evaluated too. So, teach eval_op() about OP_NEG & OP_NOT and add a new helper, eval_unop() for making it easier to use with unops. Signed-off-by: Luc Van Oostenryck --- simplify.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/simplify.c b/simplify.c index ac27debfcefb..4c6569eba036 100644 --- a/simplify.c +++ b/simplify.c @@ -535,6 +535,13 @@ static pseudo_t eval_op(int op, unsigned size, pseudo_t src1, pseudo_t src2) ur = right & bits; switch (op) { + case OP_NEG: + res = -left; + break; + case OP_NOT: + res = ~ul; + break; + case OP_ADD: res = left + right; break; @@ -636,6 +643,11 @@ undef: return NULL; } +static inline pseudo_t eval_unop(int op, unsigned size, pseudo_t src) +{ + return eval_op(op, size, src, VOID); +} + /// // Simplifications // ^^^^^^^^^^^^^^^ From patchwork Tue Oct 20 21:10:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847907 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8D14015E6 for ; Tue, 20 Oct 2020 21:10:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 642B42237B for ; Tue, 20 Oct 2020 21:10:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XIykSK0e" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438661AbgJTVKb (ORCPT ); Tue, 20 Oct 2020 17:10:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVKa (ORCPT ); Tue, 20 Oct 2020 17:10:30 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D37EC0613D3 for ; Tue, 20 Oct 2020 14:10:30 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id x1so220498eds.1 for ; Tue, 20 Oct 2020 14:10:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FhsbTb2B2UkeTJ+THBEHNNlvCZXBHrRKAKzi5oHMMoU=; b=XIykSK0en++at4r1p/oMh7hotykFLnvSSI9aPWgcgo9HwuGa1Dhnw80vL0PLxxvuXy 5EsVJ5hflPJSDZqR23hceJw3AGyfQlSVbDLoUH59h1cZ9NulQUph0JAPQ/p8IzeAazSQ cKbnbVVFx9kdCmZh3Gs6xUlkSiUBqhHc7hT+vjE141s8G71lrhbN74TyFlJMCoB11KrJ +gZvLn4EV3XWK/W/VKAFa6RJ4SCPwKPKq26g0mJBOx3F9dQRsPWnWFbi/PCaXhJFRGVY noqWdwnaOgYsSIpFnpS1SakW8dxVNq70vaw80L81uAOMaYeW81LltbYA9VBonwxdGHM9 kOHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FhsbTb2B2UkeTJ+THBEHNNlvCZXBHrRKAKzi5oHMMoU=; b=es95pRhrIP7J++RtAty6W8UXISC/yFiYREgjGlnc73hacOjwuf2Z8pNp42eIYz6NdB 6aUJnDZCKbXDuLMt9r0yTKxM64n0Z24GGLkDipRA3bYvZNjOzS+p/Oycg9WP7fgfmLlu svStivDArdQhOYNivnorPv+Tdt4Vw5/AhjT84R6T5TeSRnbjZac2Zn0r8flFZQe/5Co3 NcelL3XywQoDDM1b/jSuskw8UwtKQT+uF27IugabTW9MsCvInvr5pKwyTOQ9i5aC9pyy JCKNfvfrLnTQ38q3KEjPNmuDtpbNWEM+MWSGxaG31qSXrZdrOiES0hQR2MGzbhdkTvuK 0uag== X-Gm-Message-State: AOAM531O48TqHbONa/IuDgU56MHq6boIugy5WgH9h7sKnHqqvWlHzVZ+ aIQyK5Oon6g/kjsYOZ7KtHzSgkTB8gE= X-Google-Smtp-Source: ABdhPJyOfvMwZgycBzxdm7uftNsnMxzkJT+hmdsejgQHyjZvtLKD7SClUJeggHMilFCqK1IQVTTEAQ== X-Received: by 2002:a50:9b14:: with SMTP id o20mr4620800edi.328.1603228228823; Tue, 20 Oct 2020 14:10:28 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:28 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 05/22] unop: add helper replace_with_unop() Date: Tue, 20 Oct 2020 23:10:04 +0200 Message-Id: <20201020211021.82394-6-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Some simplifications reduce to transforming a binop into an unop. Add an helper for making this change easier and more readable. Signed-off-by: Luc Van Oostenryck --- simplify.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/simplify.c b/simplify.c index 4c6569eba036..3cac124f7d9f 100644 --- a/simplify.c +++ b/simplify.c @@ -470,6 +470,20 @@ static inline int replace_with_value(struct instruction *insn, long long val) return replace_with_pseudo(insn, value_pseudo(val)); } +/// +// replace a binop with an unop +// @insn: the instruction to be replaced +// @op: the instruction's new opcode +// @src: the instruction's new operand +// @return: REPEAT_CSE +static inline int replace_with_unop(struct instruction *insn, int op, pseudo_t src) +{ + insn->opcode = op; + replace_pseudo(insn, &insn->src1, src); + remove_usage(insn->src2, &insn->src2); + return REPEAT_CSE; +} + static inline int def_opcode(pseudo_t p) { if (p->type != PSEUDO_REG) From patchwork Tue Oct 20 21:10:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847911 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3695B1580 for ; Tue, 20 Oct 2020 21:10:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0CAC7222C8 for ; Tue, 20 Oct 2020 21:10:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pJ6PW6NF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438664AbgJTVKc (ORCPT ); Tue, 20 Oct 2020 17:10:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438655AbgJTVKb (ORCPT ); Tue, 20 Oct 2020 17:10:31 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6BDDAC0613CE for ; Tue, 20 Oct 2020 14:10:31 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id t25so4821279ejd.13 for ; Tue, 20 Oct 2020 14:10:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iaEWa5oZWpQFhq0vLL69tVQn5C5pjSR+2ukRX2MQSlM=; b=pJ6PW6NFSLvPQCjgMx49JgxHBO1jRnarI3syMaBOIdBeV8n7bHz88qrN4tfwD5jEcM sr5kNJcfGbQh11jWoEdOqe3UVy1Xk5TvsHJjAjnrVzj7tSK4CrKqdmcLZGfPFDt3Ia7x hGi5HY2xFxRpUECkGvq8RBI/DMBU8U4wg6Zf05KlxOzgAv1SzHrE4F5vgL8Tf1vE+gnp exLETTDJ3JmR4AnA0+lTX2rprDfZehSDF79UgSIK5aC+spcgyzoF/Ggu5cplDu+RP8O4 RHgy+zI5Zv60ywQKZHQqi73an1SSyB3bk98iuIJEQBoOU3ZY3TJdggYuDdVnfwKIU6/T Q/Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iaEWa5oZWpQFhq0vLL69tVQn5C5pjSR+2ukRX2MQSlM=; b=cnyMr7QNdnDJyFGOLj8Wc1vJWjUHTyV7yhjsddKtKtZdY+aeq2egnv3EmRXOEqWC+U 0VZvKTxGfXg6uJIIeI2HQ/m5/RMScTZKhRu4dBgiCv4d80nhn24t+za6JdRsrn3xqBRH fT94vpY7enXmw0t7s4+qVI/viIzzUaauoiBhH1l/gNeDd12DCy3V4+4toRnalAj+6VM6 PrGojIF8Cu2eS5ZvWpSclVDmrr1vwhjxLC5go5PKxSCNJzIWOJP6GuRSd0osxzm+0NSi Gw2sr9xey/GunQr+yub5IdZwlexMLq3mmZveo+MfManBCcLBOao/LIkDxWDAoeyiYMjl m3nQ== X-Gm-Message-State: AOAM532pE3Jr4q7PF6MVOqAJ22+BOFT/+5YA857UDtZJ4IqdJntUayZQ 5QHzDxanouvUGzPCeUBuIRaX58UN51U= X-Google-Smtp-Source: ABdhPJwY4AfXYGABEeh19INinvnJsmZK04/85egDx8iN11RxsaanFXM4Jbe1ED/PNW0Mf2RUCrmDSA== X-Received: by 2002:a17:906:8053:: with SMTP id x19mr84163ejw.139.1603228229784; Tue, 20 Oct 2020 14:10:29 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:29 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 06/22] add a flag to identify commutative & associative ops Date: Tue, 20 Oct 2020 23:10:05 +0200 Message-Id: <20201020211021.82394-7-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org The way how the functions doing the simplification of commutative or associative binops are called is simple but complicates the simplification of a specific binop. Fix this by adding a flag to the opcode table to identify the commutative and the associative binops and using this flag to call or not the functions doing the corresponding simplification. Signed-off-by: Luc Van Oostenryck --- opcode.def | 50 +++++++++++++++++++-------------------- opcode.h | 5 ++++ simplify.c | 69 ++++++++++++++++++++++++++++++++++++------------------ 3 files changed, 76 insertions(+), 48 deletions(-) diff --git a/opcode.def b/opcode.def index 1401d988d73a..c65722f0b9bb 100644 --- a/opcode.def +++ b/opcode.def @@ -15,16 +15,16 @@ OPCODE(COMPUTEDGOTO, BADOP, BADOP, BADOP, 1, OPF_NONE) OPCODE_RANGE(TERMINATOR, RET, COMPUTEDGOTO) /* Binary */ -OPCODE(ADD, BADOP, BADOP, FADD, 2, OPF_TARGET) -OPCODE(SUB, BADOP, BADOP, FSUB, 2, OPF_TARGET) -OPCODE(MUL, BADOP, BADOP, FMUL, 2, OPF_TARGET) -OPCODE(DIVU, BADOP, BADOP, FDIV, 2, OPF_TARGET) -OPCODE(DIVS, BADOP, BADOP, FDIV, 2, OPF_TARGET) -OPCODE(MODU, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(MODS, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(SHL, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(LSR, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(ASR, BADOP, BADOP, BADOP, 2, OPF_TARGET) +OPCODE(ADD, BADOP, BADOP, FADD, 2, OPF_TARGET|OPF_COMMU|OPF_ASSOC|OPF_BINOP) +OPCODE(MUL, BADOP, BADOP, FMUL, 2, OPF_TARGET|OPF_COMMU|OPF_ASSOC|OPF_BINOP) +OPCODE(SUB, BADOP, BADOP, FSUB, 2, OPF_TARGET|OPF_BINOP) +OPCODE(DIVU, BADOP, BADOP, FDIV, 2, OPF_TARGET|OPF_BINOP) +OPCODE(DIVS, BADOP, BADOP, FDIV, 2, OPF_TARGET|OPF_BINOP) +OPCODE(MODU, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_BINOP) +OPCODE(MODS, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_BINOP) +OPCODE(SHL, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_BINOP) +OPCODE(LSR, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_BINOP) +OPCODE(ASR, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_BINOP) /* Floating-point binops */ OPCODE(FADD, BADOP, BADOP, BADOP, 2, OPF_TARGET) @@ -33,9 +33,9 @@ OPCODE(FMUL, BADOP, BADOP, BADOP, 2, OPF_TARGET) OPCODE(FDIV, BADOP, BADOP, BADOP, 2, OPF_TARGET) /* Logical */ -OPCODE(AND, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(OR, BADOP, BADOP, BADOP, 2, OPF_TARGET) -OPCODE(XOR, BADOP, BADOP, BADOP, 2, OPF_TARGET) +OPCODE(AND, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_COMMU|OPF_ASSOC|OPF_BINOP) +OPCODE(OR, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_COMMU|OPF_ASSOC|OPF_BINOP) +OPCODE(XOR, BADOP, BADOP, BADOP, 2, OPF_TARGET|OPF_COMMU|OPF_ASSOC|OPF_BINOP) OPCODE_RANGE(BINARY, ADD, XOR) /* floating-point comparison */ @@ -56,21 +56,21 @@ OPCODE(FCMP_UNO, FCMP_ORD, FCMP_UNO, BADOP, 2, OPF_TARGET) OPCODE_RANGE(FPCMP, FCMP_ORD, FCMP_UNO) /* Binary comparison */ -OPCODE(SET_EQ, SET_NE, SET_EQ, FCMP_OEQ, 2, OPF_TARGET) -OPCODE(SET_LT, SET_GE, SET_GT, FCMP_OLT, 2, OPF_TARGET) -OPCODE(SET_LE, SET_GT, SET_GE, FCMP_OLE, 2, OPF_TARGET) -OPCODE(SET_GE, SET_LT, SET_LE, FCMP_OGE, 2, OPF_TARGET) -OPCODE(SET_GT, SET_LE, SET_LT, FCMP_OGT, 2, OPF_TARGET) -OPCODE(SET_B, SET_AE, SET_A, FCMP_OLT, 2, OPF_TARGET) -OPCODE(SET_BE, SET_A, SET_AE, FCMP_OLE, 2, OPF_TARGET) -OPCODE(SET_AE, SET_B, SET_BE, FCMP_OGE, 2, OPF_TARGET) -OPCODE(SET_A, SET_BE, SET_B, FCMP_OGT, 2, OPF_TARGET) -OPCODE(SET_NE, SET_EQ, SET_NE, FCMP_UNE, 2, OPF_TARGET) +OPCODE(SET_EQ, SET_NE, SET_EQ, FCMP_OEQ, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE|OPF_COMMU) +OPCODE(SET_LT, SET_GE, SET_GT, FCMP_OLT, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_LE, SET_GT, SET_GE, FCMP_OLE, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_GE, SET_LT, SET_LE, FCMP_OGE, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_GT, SET_LE, SET_LT, FCMP_OGT, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_B, SET_AE, SET_A, FCMP_OLT, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_BE, SET_A, SET_AE, FCMP_OLE, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_AE, SET_B, SET_BE, FCMP_OGE, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_A, SET_BE, SET_B, FCMP_OGT, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE) +OPCODE(SET_NE, SET_EQ, SET_NE, FCMP_UNE, 2, OPF_TARGET|OPF_BINOP|OPF_COMPARE|OPF_COMMU) OPCODE_RANGE(BINCMP, SET_EQ, SET_NE) /* Uni */ -OPCODE(NOT, BADOP, BADOP, BADOP, 1, OPF_TARGET) -OPCODE(NEG, BADOP, BADOP, FNEG, 1, OPF_TARGET) +OPCODE(NOT, BADOP, BADOP, BADOP, 1, OPF_TARGET|OPF_UNOP) +OPCODE(NEG, BADOP, BADOP, FNEG, 1, OPF_TARGET|OPF_UNOP) OPCODE(FNEG, BADOP, BADOP, BADOP, 1, OPF_TARGET) OPCODE(TRUNC, BADOP, BADOP, BADOP, 1, OPF_TARGET) OPCODE(ZEXT, BADOP, BADOP, BADOP, 1, OPF_TARGET) diff --git a/opcode.h b/opcode.h index e426bed4f7e2..bb94ec81c832 100644 --- a/opcode.h +++ b/opcode.h @@ -20,6 +20,11 @@ extern const struct opcode_table { unsigned int flags:6; #define OPF_NONE 0 #define OPF_TARGET (1 << 0) +#define OPF_COMMU (1 << 1) +#define OPF_ASSOC (1 << 2) +#define OPF_UNOP (1 << 3) +#define OPF_BINOP (1 << 4) +#define OPF_COMPARE (1 << 5) } opcode_table[]; diff --git a/simplify.c b/simplify.c index 3cac124f7d9f..db7a1e47ff0a 100644 --- a/simplify.c +++ b/simplify.c @@ -1736,35 +1736,57 @@ found: int simplify_instruction(struct instruction *insn) { + unsigned flags; + int changed = 0; + if (!insn->bb) return 0; - switch (insn->opcode) { - case OP_ADD: case OP_MUL: - case OP_AND: case OP_OR: case OP_XOR: - canonicalize_commutative(insn); - if (simplify_binop(insn)) - return REPEAT_CSE; - return simplify_associative_binop(insn); - case OP_SET_EQ: case OP_SET_NE: - canonicalize_commutative(insn); - return simplify_binop(insn); + flags = opcode_table[insn->opcode].flags; + if (flags & OPF_COMMU) + canonicalize_commutative(insn) ; + if (flags & OPF_COMPARE) + canonicalize_compare(insn) ; + if (flags & OPF_BINOP) { + if ((changed = simplify_binop(insn))) + return changed; + } + if (flags & OPF_ASSOC) { + if ((changed = simplify_associative_binop(insn))) + return changed; + } + if (flags & OPF_UNOP) { + if ((changed = simplify_unop(insn))) + return changed; + } - case OP_SET_LE: case OP_SET_GE: - case OP_SET_LT: case OP_SET_GT: - case OP_SET_B: case OP_SET_A: - case OP_SET_BE: case OP_SET_AE: - canonicalize_compare(insn); - /* fall through */ + switch (insn->opcode) { + case OP_ADD: case OP_SUB: - case OP_DIVU: case OP_DIVS: - case OP_MODU: case OP_MODS: + case OP_MUL: + case OP_AND: + case OP_OR: + case OP_XOR: case OP_SHL: - case OP_LSR: case OP_ASR: - return simplify_binop(insn); - - case OP_NOT: case OP_NEG: case OP_FNEG: - return simplify_unop(insn); + case OP_LSR: + case OP_ASR: + case OP_NOT: + case OP_NEG: + case OP_DIVU: + case OP_DIVS: + case OP_MODU: + case OP_MODS: + case OP_SET_EQ: + case OP_SET_NE: + case OP_SET_LE: + case OP_SET_GE: + case OP_SET_LT: + case OP_SET_GT: + case OP_SET_B: + case OP_SET_A: + case OP_SET_BE: + case OP_SET_AE: + break; case OP_LOAD: if (!has_users(insn->target)) return kill_instruction(insn); @@ -1778,6 +1800,7 @@ int simplify_instruction(struct instruction *insn) case OP_SEXT: case OP_ZEXT: case OP_TRUNC: return simplify_cast(insn); + case OP_FNEG: case OP_FCVTU: case OP_FCVTS: case OP_UCVTF: case OP_SCVTF: case OP_FCVTF: From patchwork Tue Oct 20 21:10:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847913 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5F72215E6 for ; Tue, 20 Oct 2020 21:10:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 396F02237B for ; Tue, 20 Oct 2020 21:10:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iJ8KliyY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438655AbgJTVKd (ORCPT ); Tue, 20 Oct 2020 17:10:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438663AbgJTVKc (ORCPT ); Tue, 20 Oct 2020 17:10:32 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 290A1C0613CE for ; Tue, 20 Oct 2020 14:10:32 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id o18so205158edq.4 for ; Tue, 20 Oct 2020 14:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=e9BG0T0Fk+xf6mMz0v9TAptKI5wSrVz7JKXenYDly10=; b=iJ8KliyY+XiMXtIQfCecu0qU5v7p1fhaRJl+LqQv9oJqNfoMY3WNjtr15mdEMiFyl5 HyK/wrnDdJhzIAv52xM/y6/DGGbf0tf+yoJ7DaQOhm7ZO1uLQakIsztY604URn276p1C j6kE+BD5f7mkAVy/9BUtL1cg1EhUQJW4KYX7NT50mLSwcDHuO3ULnP8G1D22k+se8xrP OgPpCpsi+S0MtUeY6Nt8PX07Cpqnj5uGpvwaZCfIS1lVeec0RXqaCd0rL9Zq+O7wDIkV 9FDyy9npUTN8aQdThbS897W6UhIOeguxstkde2vN6Ao/ij55MoMDoSIwtd0RuvDB5bgC kPzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=e9BG0T0Fk+xf6mMz0v9TAptKI5wSrVz7JKXenYDly10=; b=qlYrKYkU+2fxqiCoed/YmX+ivEsBlh5tXQNUzBzXNWOxqDoG5VmqEtRsVtZgojG671 huSJ/P5f4rlvifJduD8oB17fA5bISrTcySUg4yhtoymdspDVkXTsoJFf22gNrI43sbaT fejPARbGJy6AkXS1CefphFOf0qn8zl2xumOheLlZ1PdWrZ22I+XtjREGF63H6KR2kG+Z kkSSHTHItaDwdATUsA3S7l3OTq8f7FaElDjV51M6QCRXJhBJeqbeBbVZ3VYCShpinmV7 MNdysCB9CrHseZ+mVTvrGA0849AgHs4bccmWFe2RQGoF34nM5hVREdrznhPShL5mrJdU Zwyg== X-Gm-Message-State: AOAM530POOvWw1CZCkXlC60gEyUR9uBjK4nWX6HzAS3mue3Gqjt5fdNe uyXYdbYHXfVpSLRmEqTVRldYpDl+mK0= X-Google-Smtp-Source: ABdhPJzUs4hFlOuZQX9n+LfKLHC4+tDAhqeLUcX5c3U7MxPylNT116CFww77cixLvS7zWJI9Aka4Tg== X-Received: by 2002:aa7:cb82:: with SMTP id r2mr4822440edt.306.1603228230683; Tue, 20 Oct 2020 14:10:30 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:30 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 07/22] constants must be truncated to the operation's size Date: Tue, 20 Oct 2020 23:10:06 +0200 Message-Id: <20201020211021.82394-8-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org At expansion phase, when simplified, all constants are truncated to the size of the operations that generate them. This should be done during simplification too because: *) if some constants are sometimes truncated and sometimes sign-extended, CSE will miss some opportunities. *) it's not possible to sign-extend them because it's not always known if the constant is used in a signed context or not. Signed-off-by: Luc Van Oostenryck --- simplify.c | 2 +- validation/optim/canonical-sub-cte.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/simplify.c b/simplify.c index db7a1e47ff0a..3935552bd6fa 100644 --- a/simplify.c +++ b/simplify.c @@ -1118,7 +1118,7 @@ static int simplify_constant_rightside(struct instruction *insn) case OP_SUB: if (value) { insn->opcode = OP_ADD; - insn->src2 = value_pseudo(-value); + insn->src2 = eval_unop(OP_NEG, insn->size, insn->src2); return REPEAT_CSE; } /* Fall through */ diff --git a/validation/optim/canonical-sub-cte.c b/validation/optim/canonical-sub-cte.c index 223be96fa5a5..c0072884b1e6 100644 --- a/validation/optim/canonical-sub-cte.c +++ b/validation/optim/canonical-sub-cte.c @@ -3,7 +3,6 @@ int sub_cte(int x) { return (x - 1) != (x + -1); } /* * check-name: canonical-sub-cte * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: ret\\..*\\$0 From patchwork Tue Oct 20 21:10:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847915 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B863F17D5 for ; Tue, 20 Oct 2020 21:10:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 90595223BF for ; Tue, 20 Oct 2020 21:10:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DmfbXD/d" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438667AbgJTVKe (ORCPT ); Tue, 20 Oct 2020 17:10:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438666AbgJTVKd (ORCPT ); Tue, 20 Oct 2020 17:10:33 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6A58C0613CE for ; Tue, 20 Oct 2020 14:10:32 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id ce10so4852593ejc.5 for ; Tue, 20 Oct 2020 14:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oSgXKGBteXypQavUok/ewpGN+i3rTzc8JXBXQ/AIbcY=; b=DmfbXD/d7vnJIpMYltgTRbl8ubUurngYFY9Yg/RzQfFEQ9sc3WsX0ZE+BNZkf71vbZ 722KLeMimcpt5Lf7rwsvEkA4rBX9XjImwSc4fNu6wMdSJeNL+hprWdWVmN+FWskMoWpz X3CVbVOPi+nXzrwa9SsjuG0pnVsp666eOigkQFqLy/gTzSx9bJMCnlVmOG4RRd6ry5/Z 7P9wwwR7QW15oztBzWFQPVshZKqt/kv3f21/lIP6XShN0t+IuTKkrNBRmfxC9sMwVEs2 huo2XrQ2M9qHvCAEcIZtaX9xPUAjzI7alSLrquCQrtEHOjNuJlGNqO0yEmqP0jt9te3A i1KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oSgXKGBteXypQavUok/ewpGN+i3rTzc8JXBXQ/AIbcY=; b=Egv1gPqiWBauSwlX9uEv0q/a6r9LsfYDxqV3O8qsKpHp7MOWgGEPbbdbTekXT3sJUD dhM88KYVX6P0I6ETbpOaawAdMDLiDMw1Z2pPRyoXJOEWZonhlg1rNJrcAtlX0YSa7ksH N3M6hLZhMnp2AMjtZxR5EWa7gNg+uD0NOQ1lFJ/BgD3bqFk3SbjHf+dqwu+ya3hfnja0 eiuiURIUy0qx6Bmiw6dorhCVcFGhkHL88PxO4rb87IM6GF0zpdIgMChJ5EWtyIs4g5N9 1eqVXumUw3hWmrPMIp+SY0hRNa0x6eOVoHhbHTDrsnZU9kv852N7T2EsAasO5t8FxTj7 LuJQ== X-Gm-Message-State: AOAM533Awr90iy08/RJwIcY9xSQ7Bn3vauXfD0FQ+6MDM+oMcdIdIRDL JxO6jZ3DeC4/vL9Q4SqgjhdS9eBMG8U= X-Google-Smtp-Source: ABdhPJynTIIr17E4r31L/VDw4MdWLxWd6mQrCbry6HTlopbrSQLC9kCP4y3e1WEEepOA+Hz+0pw9Ug== X-Received: by 2002:a17:906:1a19:: with SMTP id i25mr73519ejf.323.1603228231474; Tue, 20 Oct 2020 14:10:31 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:30 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 08/22] reassoc: simplify (x # C) # K --> x # eval(C # K) Date: Tue, 20 Oct 2020 23:10:07 +0200 Message-Id: <20201020211021.82394-9-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Do this simplification once for all associative binops. Signed-off-by: Luc Van Oostenryck --- simplify.c | 5 +++++ validation/optim/reassoc-op-op1.c | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 3935552bd6fa..b14f88405861 100644 --- a/simplify.c +++ b/simplify.c @@ -1295,6 +1295,11 @@ static int simplify_associative_binop(struct instruction *insn) return 0; if (!simple_pseudo(def->src2)) return 0; + if (constant(def->src2) && constant(insn->src2)) { + // (x # C) # K --> x # eval(C # K) + insn->src2 = eval_op(insn->opcode, insn->size, insn->src2, def->src2); + return replace_pseudo(insn, &insn->src1, def->src1); + } if (multi_users(def->target)) return 0; switch_pseudo(def, &def->src1, insn, &insn->src2); diff --git a/validation/optim/reassoc-op-op1.c b/validation/optim/reassoc-op-op1.c index aa7092ff57a0..3d050c142249 100644 --- a/validation/optim/reassoc-op-op1.c +++ b/validation/optim/reassoc-op-op1.c @@ -8,7 +8,6 @@ int foo(int x, int *ptr) /* * check-name: reassoc-op-op1 * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-pattern(1): add\\. From patchwork Tue Oct 20 21:10:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847917 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 032CA1580 for ; Tue, 20 Oct 2020 21:10:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CE59E223BF for ; Tue, 20 Oct 2020 21:10:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="uk/zpIWe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438666AbgJTVKe (ORCPT ); Tue, 20 Oct 2020 17:10:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438663AbgJTVKe (ORCPT ); Tue, 20 Oct 2020 17:10:34 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCDA9C0613D3 for ; Tue, 20 Oct 2020 14:10:33 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id z5so4852432ejw.7 for ; Tue, 20 Oct 2020 14:10:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1hkU/TsYSEZAVvKboZ6K8XEVOVLU+DlbaodNM+SOl0U=; b=uk/zpIWevhVgL6uWCNe5IOYWRZq20oBWIuftR2rY3gUNhN0PnKwyNAsv4zmmBZwLcz VOOZuPaYGXBEm+hnCz2JGuiMifLzhcbQ10gvS8k2F/waTTPfVFXl9GchJhhmPIEVTijl ir2X8c5vumDIT64X17GrWyIEZ/29RRXgp2Fdoci4H2oML8EOoVRH6oEVAChTrOiD8RSB Sg+1r3lw9Ta6PbE5Kl9Jmet9rzTZgbJjxse12A3djLJBpALu0EJ9ANjWlsq8oK31xaYF ExeSo8N+ys6GCbrrDndub487OUnzDIuB5n8TkgWEn5d0pWcezcH9+xzzHQ7NnZtt3VZy Km/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1hkU/TsYSEZAVvKboZ6K8XEVOVLU+DlbaodNM+SOl0U=; b=UtKfYJBiMBIHwe9i/wy214R/SzSvfekuwJYQlIEsqjbZLBu4gh2d5KV0XST90hw7a+ wmv/RzIHS+sDqYu8BVz8eUlp1EBzMgFQ6jyjZxt333kD+EmQN46n7xmzBb+Sxu4js/o+ nU8WtY+0xBcG9Xn5CThDo/vbrEXhA1Yp6PNUyanpTDpCT6clbngN3pbHT4g8svmd4bAP v6XmX6qV3Ut2GPW/BfNNpAAOjo1R0OuuPi/hXdHgDbirdu0LNsLAaKA5Lxz26eAQEATP 9IobPtQKpE4acJ8gSKO8x0V48uyPFShbRsMOqvBXk17OPbKE5D2m1ttu9iYyQ7/0QavV FnnQ== X-Gm-Message-State: AOAM531qejahUvGku/TzskUnRPj8nMpP6Qn9V1xhzPrsPM6TyfrLpDyR kGZ9E5mcDDYSewcM8JEV5jalzYckPAY= X-Google-Smtp-Source: ABdhPJz/fDU1zz/uRNgdHtkisyVXEeOZiiTZcmV2OWaEx1wxNAvCSllStNQrnc9x36ZBPMD199hXkQ== X-Received: by 2002:a17:906:3748:: with SMTP id e8mr96699ejc.31.1603228232225; Tue, 20 Oct 2020 14:10:32 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:31 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 09/22] sub: reorganize handling of OP_{ADD,SUB}s with constant rightside Date: Tue, 20 Oct 2020 23:10:08 +0200 Message-Id: <20201020211021.82394-10-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org This is a preparatory step for more interesting changes later. Signed-off-by: Luc Van Oostenryck --- simplify.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/simplify.c b/simplify.c index b14f88405861..f837b003efd4 100644 --- a/simplify.c +++ b/simplify.c @@ -1101,6 +1101,7 @@ static int simplify_constant_rightside(struct instruction *insn) long long value = insn->src2->value; long long sbit = 1ULL << (insn->size - 1); long long bits = sbit | (sbit - 1); + int changed = 0; switch (insn->opcode) { case OP_OR: @@ -1113,20 +1114,21 @@ static int simplify_constant_rightside(struct instruction *insn) insn->opcode = OP_NOT; return REPEAT_CSE; } - goto case_neutral_zero; + /* fallthrough */ + case_neutral_zero: + if (!value) + return replace_with_pseudo(insn, insn->src1); + return 0; case OP_SUB: - if (value) { - insn->opcode = OP_ADD; - insn->src2 = eval_unop(OP_NEG, insn->size, insn->src2); - return REPEAT_CSE; - } - /* Fall through */ + insn->opcode = OP_ADD; + insn->src2 = eval_unop(OP_NEG, insn->size, insn->src2); + changed = REPEAT_CSE; + /* fallthrough */ case OP_ADD: - case_neutral_zero: if (!value) return replace_with_pseudo(insn, insn->src1); - return 0; + return changed; case OP_ASR: case OP_SHL: case OP_LSR: From patchwork Tue Oct 20 21:10:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847921 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C0C7314B4 for ; Tue, 20 Oct 2020 21:10:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 957B92237B for ; Tue, 20 Oct 2020 21:10:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A7Wfz3DH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438668AbgJTVKh (ORCPT ); Tue, 20 Oct 2020 17:10:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438663AbgJTVKe (ORCPT ); Tue, 20 Oct 2020 17:10:34 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 989B9C0613CE for ; Tue, 20 Oct 2020 14:10:34 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id v19so170867edx.9 for ; Tue, 20 Oct 2020 14:10:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fJtWYwTJqDaS8m6q91fqVTWHCO0pCI93o75eNtQni0A=; b=A7Wfz3DHRQTzSR1reVV9obx4SR+9lMNsJ9kMXXPENOJkI7hjK8E0F6JQhZZC5aDLRz 8K6DJXPvBLnrvfw1aSQ60vFD56J6P7yt8taYvbvbVdgLpUKzsXxdr+Z2XKO0U3iy3Ff5 RrD9vGfdZXP+YpwsH1JAhLmu+gaD7Xa7KmboOT5Wgv55NMf+TykCVEvfm/ZY3A/5ofIR zmwj568/fAM4NaOhMyGW890iNhw9CFeSRIEk0FOt7Ujp7N0pbn9iDJ67kzsTufae261S SoqUVQK+VAVLo6FZ0ie2oo2qtZtIljJvi6Hfsm/VdLg1xDNQ9REshBWo1OSQKu5BUait 2KaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fJtWYwTJqDaS8m6q91fqVTWHCO0pCI93o75eNtQni0A=; b=QAOnbDkFO5O9S7dLRR4arxCTvr38TXnKVdcY8MTa69KoeeqQqNOsbzXPBheswoJXVp 2AlLIUTEA+XTjvS7/nl+CtaAjbUXSuvrNcg9Vl91dDsl4Kvg7WQ8wk8EPBKqH57Wuupf 51wE4GMv2UOO56z4P2JG9hTTXX2rx7cPxQ3KkM60N1jCy1CofIfj2/b/LIGyL/brvNr6 Lwpdld4h2wLloO0eohFbzLIdrM6SFAYquttqH8lgDveP7tbM/Lmspu9S+LBWXBjIb6k1 VviZWeTQ0gMIV5ZKpvHHqg8I4E/PZLSek9H+Fw1p67C2i6w2pAE5gJ0OxaxOS0sykoeE 8l+A== X-Gm-Message-State: AOAM531uKLpPqQKCAqIgKVJC7lIpZ/atZnTstrZBAFKXU40AuypMmLvl BnxcaWBJIVz3peGn1pcAzWwRBS9w/yw= X-Google-Smtp-Source: ABdhPJzRKkiiIblClOIuEZQMjwB3sLh70Dl8Tp6tlmj5WhGVZpUeZk1o4BmDPA8yeI5Rs7l6Whj2Rw== X-Received: by 2002:aa7:d7d9:: with SMTP id e25mr4784236eds.253.1603228233065; Tue, 20 Oct 2020 14:10:33 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:32 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 10/22] sub: canonicalize (0 - x) into -x Date: Tue, 20 Oct 2020 23:10:09 +0200 Message-Id: <20201020211021.82394-11-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Not really a simplification in itself but it make some other simplification a little easier (already because there is one argument less to be matched). Signed-off-by: Luc Van Oostenryck --- simplify.c | 4 ++++ validation/optim/simplify-zero-sub.c | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index f837b003efd4..aa0357d9e285 100644 --- a/simplify.c +++ b/simplify.c @@ -1174,6 +1174,10 @@ static int simplify_constant_leftside(struct instruction *insn) if (!value) return replace_with_pseudo(insn, insn->src1); return 0; + case OP_SUB: + if (!value) // (0 - x) --> -x + return replace_with_unop(insn, OP_NEG, insn->src2); + break; } return 0; } diff --git a/validation/optim/simplify-zero-sub.c b/validation/optim/simplify-zero-sub.c index cc8fe7a3159b..70ce7c908844 100644 --- a/validation/optim/simplify-zero-sub.c +++ b/validation/optim/simplify-zero-sub.c @@ -3,7 +3,6 @@ int zero_sub(int x) { return 0 - x; } /* * check-name: simplify-zero-sub * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: neg\\..* %arg1 From patchwork Tue Oct 20 21:10:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847919 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 06F8F15E6 for ; Tue, 20 Oct 2020 21:10:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D27EF2237B for ; Tue, 20 Oct 2020 21:10:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jLLqqiYm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438671AbgJTVKh (ORCPT ); Tue, 20 Oct 2020 17:10:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438668AbgJTVKf (ORCPT ); Tue, 20 Oct 2020 17:10:35 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 586D9C0613D3 for ; Tue, 20 Oct 2020 14:10:35 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id t20so159280edr.11 for ; Tue, 20 Oct 2020 14:10:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IRtDtAlL5j+s8GMlddko0p8KBGsquU4okwX0yha9+7U=; b=jLLqqiYmypJtElBivLXTfJ4a7eNfFk1LSC6nbjY6V6uE6eNV3QPKvAogbjofarWv4g aNEhe+k2p4luifuoxznw1g70sYNctZ3lmMjoI3hdRMl6I4o6gHOnC9DSqG2TYCzqnCDB LPuh27VY9XwHa1SO+ZCNQVRXGz2fFi5ZOvtcsU15gx3bEovw7vILdz4A/9IofuCz1AZI g4OGBNwimTNelu0B/DFT5wrlyX2b6X5Z38TfEMh31YVQZLD20wet8POUZLC3AxKTWIyx vN8mXEo/iuXANEwIRtIfVev+8XhkZcV3D+dbEna7R6O37NmVws1qaShATAi4NQ7dRNAK UAzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IRtDtAlL5j+s8GMlddko0p8KBGsquU4okwX0yha9+7U=; b=HEikM5+u47EbZKA5HPmpv6da6G4dVEdpDeCEYpUNK9QReM71yBOHjo6SfLaRLr7owf bA7ly4BV3gwJbYj17RfpXp2WN+ZzbvNAbPzlmV9T+fl5pe6CUCJq2GwtUmHPELf8BYGT NvKoO7D59TmNEOFJUVyYSj/gCJ6Kdl4pBLEoVUimAAuBDl7b9LWYDHJhExp8fG5kq737 0UaITWQbLtq+nYqAroXUQHEL/J3BG4KgjLRp/LGAn/fqxcgDvReSWGHffWDKsyMwfXIM Fi7kfp1ZW98gnyUZJ+xLY/NhEQruMgbMlX+00v4rts8Iey5G8zn/v1aFqXJRseLGi6v4 Kxyg== X-Gm-Message-State: AOAM532Bheo6zbRFVzGbyvPZRT4lBxFnV0lwt7SmgbW2h5lqO5p3LM2o P4OGBbAUnOM4xymDCOJ9SoP8AcHh/5A= X-Google-Smtp-Source: ABdhPJybjlw34sUFJAb540f+1LTMJ21jxQKURh270ubLGcDfdkLUWDbCbW9qYPTgk5v4YaLeaI3abg== X-Received: by 2002:aa7:dada:: with SMTP id x26mr4818810eds.167.1603228233832; Tue, 20 Oct 2020 14:10:33 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:33 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 11/22] sub: simplify C - (y + D) --> eval(C-D) - y Date: Tue, 20 Oct 2020 23:10:10 +0200 Message-Id: <20201020211021.82394-12-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 18 ++++++++++++++++++ validation/optim/simplify-cte-sub-addr.c | 1 - 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index aa0357d9e285..b97354bc40cc 100644 --- a/simplify.c +++ b/simplify.c @@ -1157,6 +1157,22 @@ static int simplify_constant_rightside(struct instruction *insn) return 0; } +static int simplify_const_leftsub(struct instruction *insn, struct instruction *def) +{ + unsigned size = insn->size; + pseudo_t src1 = insn->src1; + + switch (def->opcode) { + case OP_ADD: + if (constant(def->src2)) { // C - (y + D) --> eval(C-D) - y + insn->src1 = eval_op(OP_SUB, size, src1, def->src2); + return replace_pseudo(insn, &insn->src2, def->src1); + } + break; + } + return 0; +} + static int simplify_constant_leftside(struct instruction *insn) { long long value = insn->src1->value; @@ -1177,6 +1193,8 @@ static int simplify_constant_leftside(struct instruction *insn) case OP_SUB: if (!value) // (0 - x) --> -x return replace_with_unop(insn, OP_NEG, insn->src2); + if (insn->src2->type == PSEUDO_REG) + return simplify_const_leftsub(insn, insn->src2->def); break; } return 0; diff --git a/validation/optim/simplify-cte-sub-addr.c b/validation/optim/simplify-cte-sub-addr.c index 81f5b34551c6..bf36c8a0a30a 100644 --- a/validation/optim/simplify-cte-sub-addr.c +++ b/validation/optim/simplify-cte-sub-addr.c @@ -3,7 +3,6 @@ int cte_sub_addr(int x) { return 2 - (x + 1); } /* * check-name: simplify-cte-sub-addr * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: sub\\..*\\$1, %arg1 From patchwork Tue Oct 20 21:10:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847929 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 93A7E14B4 for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E6EE223BF for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Npg65Whk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438673AbgJTVKk (ORCPT ); Tue, 20 Oct 2020 17:10:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438672AbgJTVKh (ORCPT ); Tue, 20 Oct 2020 17:10:37 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25854C0613D4 for ; Tue, 20 Oct 2020 14:10:36 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id z5so4852571ejw.7 for ; Tue, 20 Oct 2020 14:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nVl0dVv/acwHg4/sH+SKrAAhgej3MkYutdcwvImwICY=; b=Npg65WhkGWeh0PryVbVZAlT+nB5Lh0t1Q4tayM27i4XOwx6NrdsfgEOnurkT38XBUq C9UCIRfM6DuxuXjRyQOwNPwZc1Ko+dO8WcgISDCHHC6xILb3H4/WIsb0XBTM/ZJaVN/A Ig0BfjwLzdb8IkiUZg/bQ5+YMcsBPtM41H/mGs+77BK7RYk4Rr3rxTx/RUbkPcU5RjN2 KmYfn3Rjl2SooiuYiKwXapBIsIb7/YhuYJbCirUf9hr7R2g42WTdcAIu+5yCR+Ce9icB 1aEgiu/mN2iUdTKDRmJMA2Xil5pfBXPY4+eW/vIs3Yq4Af1dSIh222vw3ubEFkU0hhCw 7qWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nVl0dVv/acwHg4/sH+SKrAAhgej3MkYutdcwvImwICY=; b=IJRTB19+B8z5ghHxWV6/t0yTHGy5AU4058TD+R9ijreobgKGp3vIsIb52pWiFU9LNT nMj4vK0/ErQ5nwfnH4/VkNLyUFKThu9l2b5RSn20qo8+e8eXSmVca3lNAdpnFbYssYco 3L3+7WNHgkRg2VzdISVPYgk9/zxn7MYF2R6WfNHL0nPHFuPFxagB1Ax4+PIF6Q3Sf+LF RQMRxpwwjoOTI33C/fwDOdUp+nA6AruuWqb/cn9GzYdkqdTWCyjXrgQFCUhN1G5zCHKd wuH10Euv2bj2KDK7xNvDLdzsSdUBOONh5lEqRTI9cDzf7TL7/+HSbhW4eC3RGSwrdzi8 i5tw== X-Gm-Message-State: AOAM530hR//tdfQnMTJlDZWDPM3n3CdUJx2BM/462rIjWgAez4KOPXeY M9Tk52cqJfA89R9E2uA1hx1ZyaznwKI= X-Google-Smtp-Source: ABdhPJxmltvqU0mhZJCdnUObJAK+tj/xXCUS0UY5OOYIMHdk94Un8wl/10O5ful8RCa8kDk4hpf5uA== X-Received: by 2002:a17:906:4b0f:: with SMTP id y15mr115203eju.198.1603228234631; Tue, 20 Oct 2020 14:10:34 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:34 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 12/22] sub: simplify C - (D - z) --> z + eval(C-D) Date: Tue, 20 Oct 2020 23:10:11 +0200 Message-Id: <20201020211021.82394-13-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 8 ++++++++ validation/optim/simplify-cte-sub-subr.c | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index b97354bc40cc..7d1897e65b07 100644 --- a/simplify.c +++ b/simplify.c @@ -1169,6 +1169,14 @@ static int simplify_const_leftsub(struct instruction *insn, struct instruction * return replace_pseudo(insn, &insn->src2, def->src1); } break; + case OP_SUB: + if (constant(def->src1)) { // C - (D - z) --> z + eval(C-D) + pseudo_t val = eval_op(OP_SUB, size, src1, def->src1); + insn->opcode = OP_ADD; + use_pseudo(insn, def->src2, &insn->src1); + return replace_pseudo(insn, &insn->src2, val); + } + break; } return 0; } diff --git a/validation/optim/simplify-cte-sub-subr.c b/validation/optim/simplify-cte-sub-subr.c index 950b233e60c3..10fdbbc82933 100644 --- a/validation/optim/simplify-cte-sub-subr.c +++ b/validation/optim/simplify-cte-sub-subr.c @@ -3,7 +3,6 @@ int cte_sub_subr(int x) { return 1 - (1 - x); } /* * check-name: simplify-cte-sub-subr * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: ret\\..* %arg1 From patchwork Tue Oct 20 21:10:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847923 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0E52B1580 for ; Tue, 20 Oct 2020 21:10:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D8653223BF for ; Tue, 20 Oct 2020 21:10:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EHD5wagW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438663AbgJTVKi (ORCPT ); Tue, 20 Oct 2020 17:10:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKh (ORCPT ); Tue, 20 Oct 2020 17:10:37 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED1BBC0613D5 for ; Tue, 20 Oct 2020 14:10:36 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id qp15so4866714ejb.3 for ; Tue, 20 Oct 2020 14:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bgRflzBA3aMwMm2Ard036ItvvTVFcTdtfRKHc9vwZQ4=; b=EHD5wagWTXoBZNF7q/Z22JflY3ay0KtDiXh2zIKdK4FxyiKsUzSBrHG2Bjp0AYp8nv PD4JYNybb/dX5g8NNwQGymqeefWtaugxQeESaHLCz5K8AKLjMij4DRCVHAJohDkZAIUc /VVkbtn1zpfaMZ6+84Sy0V+urZusoD4g31F2up/f2XQwiQtxlpv9gxyBiFtuTq3jQnBD CJf6gkWU6L3VE0bjvvCJZR9kfi6UT9fG2ViRjV0gOw13C9HLxxfZtefrBWF0oFUydKYG KZYh51A2mje5WZVTVSv2bikQ6TdWCtPvULHm9ZwTYPahB9dRqUe9Z6NqsblX1r0cINkx 0fog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bgRflzBA3aMwMm2Ard036ItvvTVFcTdtfRKHc9vwZQ4=; b=evG0Yx+3pmppT3GBTIHKglcej3eupPHFgI8e6K3xsDGZGUU6Twj76zpDZCftQstyS9 olOPKRKjSdJeB1q4UvMEFYd6XelSxX7G1bjiYFFMSyHdAxda/1eGu/9tMQ+Xj6AnNGv0 OH1LAZNEdqOLoAknAIBvTChgpd5avg68dC+rhfYL5CryQ3zFIhu+Hu6qBKfS538bT/2z d1jRQlzeDAKaj0G7JB0o+RYoTLI5fXUoFJACQYJCNpxx0ovd5SSswlFMShD/wdpsjzo0 yoCz2EZMrQFMblP6nSka/O4Rr5UKIamxVhJr637O1uMm+g1n2cNbe0kGqw2yOyNK9w5t F64Q== X-Gm-Message-State: AOAM531ylC0nMvfzqpm5mr+p0AIIKI67lqiiaRi8k0yGxfFrX+xbdHNr 0LivnIswRbnSkrMw03rntXMDv7C4THo= X-Google-Smtp-Source: ABdhPJywNhv+pMW+fG7RycrHBSAxszIjac/4R8i0Ga6q/lt4pFH9xfQcC25iXZcuVuPx/kjZ2jvAag== X-Received: by 2002:a17:906:22d8:: with SMTP id q24mr62889eja.479.1603228235461; Tue, 20 Oct 2020 14:10:35 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:34 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 13/22] sub: simplify (C - y) + D --> eval(C+D) - y Date: Tue, 20 Oct 2020 23:10:12 +0200 Message-Id: <20201020211021.82394-14-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 20 ++++++++++++++++++++ validation/optim/simplify-cte-sub-addl.c | 1 - 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 7d1897e65b07..929a177631e5 100644 --- a/simplify.c +++ b/simplify.c @@ -1096,6 +1096,24 @@ static int simplify_constant_mask(struct instruction *insn, unsigned long long m return 0; } +static int simplify_const_rightadd(struct instruction *def, struct instruction *insn) +{ + unsigned size = insn->size; + pseudo_t src2 = insn->src2; + + switch (def->opcode) { + case OP_SUB: + if (constant(def->src1)) { // (C - y) + D --> eval(C+D) - y + pseudo_t val = eval_op(OP_ADD, size, def->src1, src2); + insn->opcode = OP_SUB; + use_pseudo(insn, def->src2, &insn->src2); + return replace_pseudo(insn, &insn->src1, val); + } + break; + } + return 0; +} + static int simplify_constant_rightside(struct instruction *insn) { long long value = insn->src2->value; @@ -1128,6 +1146,8 @@ static int simplify_constant_rightside(struct instruction *insn) case OP_ADD: if (!value) return replace_with_pseudo(insn, insn->src1); + if (insn->src1->type == PSEUDO_REG) // (x # y) + z + changed |= simplify_const_rightadd(insn->src1->def, insn); return changed; case OP_ASR: case OP_SHL: diff --git a/validation/optim/simplify-cte-sub-addl.c b/validation/optim/simplify-cte-sub-addl.c index 49e510062c03..137029636f2d 100644 --- a/validation/optim/simplify-cte-sub-addl.c +++ b/validation/optim/simplify-cte-sub-addl.c @@ -3,7 +3,6 @@ int cte_sub_addl(int x) { return (1 - x) + 1; } /* * check-name: simplify-cte-sub-addl * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: sub\\..*\\$2, %arg1 From patchwork Tue Oct 20 21:10:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847927 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5663C15E6 for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2DDFB223BF for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rbeGSw5e" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438676AbgJTVKj (ORCPT ); Tue, 20 Oct 2020 17:10:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438673AbgJTVKi (ORCPT ); Tue, 20 Oct 2020 17:10:38 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD5D8C0613CE for ; Tue, 20 Oct 2020 14:10:37 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id x1so220799eds.1 for ; Tue, 20 Oct 2020 14:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Sse68jbrGJSujT8XS3t6wSowCCrrsJQHL8oeiyDQ5/Q=; b=rbeGSw5e1K3Gh8FNnoyzhPbg0RdaBa/HLPW/C4wH+TlF9064U8iQYLM8cVxiUGCdhl g2OIC8HQWyfGWZSZ9ndC+ABD+X8DBnQghq9wDE6kB3Iv/zToCDD40bXtyjsGSDIhrBka GjPLdZFmTvs54x5QkAaZ6pIo4uRDhI6U5PFA8z2BuUX8mhX6HWAwEaUBlyJapWFNLPZr NmFvJdI45BBFVKL7l04mI/4pbZ7yPaxNcN5fEPVBWN6YhqbnNAEySuYy5SGsInz7NDhq yZwlhk6THU3PDRzUgtDrgemILs4yU26WshIMZ779qD3lsu5x1RChgHfCUjYTxIpWJNac 6Vgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Sse68jbrGJSujT8XS3t6wSowCCrrsJQHL8oeiyDQ5/Q=; b=LgOVR49lxSM8NfPysAibLeLfOvfM5O4oCUyQtKm3F6nWcmIWpfkuRVi9ZSTP1GaCSs IeDqZa6BUHdNoxORHvZrc4NwwxbTVd/+gL4uoQTXZvTKfsHDvSYjmaULaN1Y7rdjdtup uewPIPCiLD2ERLHGyYuwERugLOEOylNDpIVraZk2HIAEJHIyqZQkXqXjSTvLOlgdwsGr kzcgok4jUsanxbtxHyV+0Tqu2hgeyTPh1PzcaCQ1NUTzgXdqAE5Pg1Hi6dSxJjRL6n3k 9Eu8lVcSVaP5SqK91JawIVNXxSUyabPzhtti7Vv1sg3wiLZ1BXWLH2Oo1KVHL1WM99fL Zmxw== X-Gm-Message-State: AOAM533ghQJgbdr12R5JtkBMEF1wejDlnzrE+rjds4ivcXLYDCUY0v2X K+0jMkPZLDLOhJLVHjV2MMblaZG3GEE= X-Google-Smtp-Source: ABdhPJxilUpAfygkJiWGgBV39g7UXW3rsGylBUjoFwvG2q4FsPvZ5B8tarkw+zaiKskvlOrmJNbMvg== X-Received: by 2002:a05:6402:293:: with SMTP id l19mr4810576edv.227.1603228236290; Tue, 20 Oct 2020 14:10:36 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:35 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 14/22] sub: simplify (x - -y) --> (x + y) Date: Tue, 20 Oct 2020 23:10:13 +0200 Message-Id: <20201020211021.82394-15-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 16 +++++++++++++++- validation/optim/simplify-sub-neg.c | 1 - 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/simplify.c b/simplify.c index 929a177631e5..fa7e1679d7ac 100644 --- a/simplify.c +++ b/simplify.c @@ -1358,6 +1358,20 @@ static int simplify_associative_binop(struct instruction *insn) return REPEAT_CSE; } +static int simplify_sub(struct instruction *insn) +{ + pseudo_t src2 = insn->src2; + struct instruction *def; + + switch (DEF_OPCODE(def, src2)) { + case OP_NEG: // (x - -y) --> (x + y) + insn->opcode = OP_ADD; + return replace_pseudo(insn, &insn->src2, def->src); + } + + return 0; +} + static int simplify_constant_unop(struct instruction *insn) { long long val = insn->src1->value; @@ -1818,8 +1832,8 @@ int simplify_instruction(struct instruction *insn) } switch (insn->opcode) { + case OP_SUB: return simplify_sub(insn); case OP_ADD: - case OP_SUB: case OP_MUL: case OP_AND: case OP_OR: diff --git a/validation/optim/simplify-sub-neg.c b/validation/optim/simplify-sub-neg.c index b6fcc2baabec..49be847cca7d 100644 --- a/validation/optim/simplify-sub-neg.c +++ b/validation/optim/simplify-sub-neg.c @@ -3,7 +3,6 @@ int sub_neg(int x, int y) { return x - -y; } /* * check-name: simplify-sub-neg * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: add\\..*%arg., %arg. From patchwork Tue Oct 20 21:10:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847925 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 16B101580 for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E195B222C8 for ; Tue, 20 Oct 2020 21:10:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ixhbVuoO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438674AbgJTVKj (ORCPT ); Tue, 20 Oct 2020 17:10:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKi (ORCPT ); Tue, 20 Oct 2020 17:10:38 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4B8AC0613D3 for ; Tue, 20 Oct 2020 14:10:38 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id cm24so231363edb.0 for ; Tue, 20 Oct 2020 14:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JubeBH/bUDS2du04BRkOUnycgmlSww6vh4bLTZNWLgY=; b=ixhbVuoODQ1qOtcmfAhqX5lvXTdFARwBLsnJcj0qoXcvomCbvJQ9oD0DDjki+ixxJk KGOgd/v/N9eo7x3aBoCv5g67rXa0ep7SRbmiAIpIYVJ8a5Yz+EnwqFSNrwnBC+tYkZEP +XV6h8MIwycDvrGUkHUPWsaG0UY159NrzZwemoDnmk6ObohRxZQwm5F6/KYyIJNf6EgH GQtiXdTj9nexmCkqQm1BkEzsX9NjkGR12UiPMzqBo3CNIuDm0Gpv9+kLTka5uR9z9yPB ZeKT7SoHRYp4oUHL+KlhczodZXwNpvArlrSKViu1ZICimN40KWpVABGtJDHt+UUrFooW g7bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JubeBH/bUDS2du04BRkOUnycgmlSww6vh4bLTZNWLgY=; b=Iv4evKIeYXioZ69P6qxGVrkfNpxZmETXKYEcKKQDBxEKtXEz+iFlhjLmi8aC1QC+n/ vtpHuoDy3/PPrJzDkmMdayqRQfZj3Zn2Pn6rzqcMCu7CCpxOMJRbSut9LP2kc8xuaUHU 6l48qw7R9OBWs/ElrmM4UxNYdVmyrlawdmZMWFLGRqBz3g8A4C+YkaRC25tFcUU2uEiJ F03MuvGwg5QeHH7DLahYRjsfl5dfrWTVSTV+kJst2Qlxl8WLvKU5DNP/37UPu6FCHDa5 uBFp6qQDOj/YUvQcoETTcrUv73JvURz22EIA6YJyYtyL8U0EKlgAcNWefyREpqKiyhQ6 YpYQ== X-Gm-Message-State: AOAM531MxDTrNUKev6AvMUZcsum+Cmc1vSH0AG4xZ6IctSMA4xgC6Epy J+xo07MP02vSpTwdUea+eqF5YJlTBXk= X-Google-Smtp-Source: ABdhPJzSmA5LUkWN4Wos/bBcHe5KNnYo+NmMgoykz5s32vUyYls4hFJwVTFT/rrGQocgEqCC4BFSvQ== X-Received: by 2002:aa7:d759:: with SMTP id a25mr4723253eds.344.1603228237126; Tue, 20 Oct 2020 14:10:37 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:36 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 15/22] add: simplify (x + -y) --> (x - y) Date: Tue, 20 Oct 2020 23:10:14 +0200 Message-Id: <20201020211021.82394-16-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 16 +++++++++++++++- validation/optim/simplify-add-neg.c | 1 - 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/simplify.c b/simplify.c index fa7e1679d7ac..f8a0ba726561 100644 --- a/simplify.c +++ b/simplify.c @@ -1358,6 +1358,20 @@ static int simplify_associative_binop(struct instruction *insn) return REPEAT_CSE; } +static int simplify_add(struct instruction *insn) +{ + pseudo_t src2 = insn->src2; + struct instruction *def; + + switch (DEF_OPCODE(def, src2)) { + case OP_NEG: // (x + -y) --> (x - y) + insn->opcode = OP_SUB; + return replace_pseudo(insn, &insn->src2, def->src); + } + + return 0; +} + static int simplify_sub(struct instruction *insn) { pseudo_t src2 = insn->src2; @@ -1832,8 +1846,8 @@ int simplify_instruction(struct instruction *insn) } switch (insn->opcode) { + case OP_ADD: return simplify_add(insn); case OP_SUB: return simplify_sub(insn); - case OP_ADD: case OP_MUL: case OP_AND: case OP_OR: diff --git a/validation/optim/simplify-add-neg.c b/validation/optim/simplify-add-neg.c index 19b64b096567..c24b8e19e5c3 100644 --- a/validation/optim/simplify-add-neg.c +++ b/validation/optim/simplify-add-neg.c @@ -3,7 +3,6 @@ int add_neg(int x, int y) { return x + -y; } /* * check-name: simplify-add-neg * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: sub\\..*%arg1, %arg2 From patchwork Tue Oct 20 21:10:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847931 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D4CF01580 for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AC723223BF for ; Tue, 20 Oct 2020 21:10:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="atrCvdHf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438672AbgJTVKk (ORCPT ); Tue, 20 Oct 2020 17:10:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKj (ORCPT ); Tue, 20 Oct 2020 17:10:39 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 682A2C0613D5 for ; Tue, 20 Oct 2020 14:10:39 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id h24so4835337ejg.9 for ; Tue, 20 Oct 2020 14:10:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/26ZOzWZHEHfyhnCi+3Azo4PYzP6utiyjC5XgbWCZL0=; b=atrCvdHf3rfMCUBq/mGXRJ04Gv3YH/FcJnTcr0igXQirvHJFR+l/88y1T8CnLkGLMB QNgH+rKyYAoTOhBmX2fHlXjsGEDfN05v0Ar/NgsH9XeA/oa+LTOuLNwURwfLxqkpDg6D H/tdMxwv1tLi4AJOssAHnt2iVgtO+bJUyih+0PsXZewKBl/7I4LpRQ8+fiP3qLR75kmb KKmLArEBnRm8OXxn9RX4Fw1NcdpvQxzU/FODUb1LHxESaxY1V7wrE9FrjVj3AmNGY/zp wwCalfzvXabTdqrlekt5NVLE6B1170IanEGDyLlAnCTUn/zdFL1fjLZkjZFmeoeAV8Sm p1Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/26ZOzWZHEHfyhnCi+3Azo4PYzP6utiyjC5XgbWCZL0=; b=pZRotVnrPMmmvIgFek/JrflCWrBvO3mfaSrUzMJPSxkhcdT1xR1huvrxhYCuaJLid+ QEPHXTJMCyCLAs6J2Yx8eaZaOhVWNVTEd5y+r+ffqtrInkstQwhcCwgZw8L+ozgYNb69 DU1NdhtB84h2LYAsHNA/sd8gfPYAzdswXprwmMUcUL5bfLfO68e5DEorJnrj0Dmarad2 jXsxgvHhczJBZxjh9/Y1vEMor+MGV+Xn/KGRrZfjpbqPfLG/9R9nqbDRI6iDopQsYTR3 neBEO8qCC7CYer4Edj+18IglPbSW7C43NGM1tuNpo1hSd+p1ZdeMMPZm9KWjlqBkA0NE oGMA== X-Gm-Message-State: AOAM532j5+/Us9Qb55nRENzDkcc/9BLWXq3FxoWcTDmEn8iyTIHO+VPI pLxCyIixOXIL8KpmCsg/bbeCA4f/v/g= X-Google-Smtp-Source: ABdhPJw2HoVcYY70SAtyxKNjmUdZdEx3kcEOqneLcXoEixij1mE2ZZoFGUixwMlEvRt8lrU2HwPJvA== X-Received: by 2002:a17:906:3cc:: with SMTP id c12mr118993eja.216.1603228237943; Tue, 20 Oct 2020 14:10:37 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:37 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 16/22] add: simplify (-x + y) --> (y - x) Date: Tue, 20 Oct 2020 23:10:15 +0200 Message-Id: <20201020211021.82394-17-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 8 ++++++++ validation/optim/simplify-neg-add.c | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index f8a0ba726561..187d4fc0c9ab 100644 --- a/simplify.c +++ b/simplify.c @@ -1360,9 +1360,17 @@ static int simplify_associative_binop(struct instruction *insn) static int simplify_add(struct instruction *insn) { + pseudo_t src1 = insn->src1; pseudo_t src2 = insn->src2; struct instruction *def; + switch (DEF_OPCODE(def, src1)) { + case OP_NEG: // (-x + y) --> (y - x) + switch_pseudo(insn, &insn->src1, insn, &insn->src2); + insn->opcode = OP_SUB; + return replace_pseudo(insn, &insn->src2, def->src); + } + switch (DEF_OPCODE(def, src2)) { case OP_NEG: // (x + -y) --> (x - y) insn->opcode = OP_SUB; diff --git a/validation/optim/simplify-neg-add.c b/validation/optim/simplify-neg-add.c index 66a820f28069..6223b4f98f3b 100644 --- a/validation/optim/simplify-neg-add.c +++ b/validation/optim/simplify-neg-add.c @@ -3,7 +3,6 @@ int neg_add(int x, int y) { return -x + y; } /* * check-name: simplify-neg-add * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: sub\\..*%arg2, %arg1 From patchwork Tue Oct 20 21:10:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847933 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B09FE14B4 for ; Tue, 20 Oct 2020 21:10:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 890C92237B for ; Tue, 20 Oct 2020 21:10:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Pvv8/AMq" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438677AbgJTVKl (ORCPT ); Tue, 20 Oct 2020 17:10:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKl (ORCPT ); Tue, 20 Oct 2020 17:10:41 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADE4CC0613CE for ; Tue, 20 Oct 2020 14:10:40 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id t20so159488edr.11 for ; Tue, 20 Oct 2020 14:10:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zcmIyfSPT3DB9IRLt1Q7PWIxtIk0W3pNJ/px2/pPzCQ=; b=Pvv8/AMqc6JqP9EApFKTTRPUUix3FKyGTDA3+hbKk/usP4mXP3aHnCVBsSc+301hiI iePhhtitX8m/vKRL1aLakwCMqq2KEth9vAm6TNtZn0rwTF5MhldwZodrJJfgNrhvG9su qzYhIkUkiy8gFeS4uio08i9IpSYcALEkullSs1FSCbHQMN1K7dIWH5I+mNHRttFwCCdk 0s5SIJ0d2yaOjd9+y8n6PJ8QQXUKJwGeLj/vpMUGAT7ie0ogFxZUJPMQDmmEuWPgE12f OU7bli8LPWKe26F/drcHgEvMZVZ+HGaGB+lInVynenSlFYPHQKYDjyQStP8eVGrT1l6i ScuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zcmIyfSPT3DB9IRLt1Q7PWIxtIk0W3pNJ/px2/pPzCQ=; b=QcZ34fRRVvB6N5TKSNCgdcmG6aqOWpaZDQRwjbjsmigyy20+7BdtLdz/7t84A5cgo4 AIEyMSFUr8iyK7zifSCalxXiPckCPdPwB14Bx4pd0q57RDdh4Lr5KrTrWNTnoCBPIUAl pExvrkMgLll6+BT3yFnncSgEgQ8q9J8xEu7BjZ80qgtzDGsQepTpQ7xlDA/pnItf/hTQ ax5yDPiGZpxVPwzf8/u811R60L1w52D1LSxeBCNGw/zNEsNMRLQzS/+Q8qviO8widOK+ ZbEd565STEin/qXIML6WHSbR2PJhMmHQ4DRrY1tACK83bcHQ0B/KOdVgJ0M1M/ouUga4 41LQ== X-Gm-Message-State: AOAM532DV8LOz6mmtuX+qT44KVNp9sep7hPHgg+UbcmpgSeBc+oyqnqr Gs0EhTHTL0qg27Du0Q2zzWT6CDFC0kg= X-Google-Smtp-Source: ABdhPJz134w3NXMtjqFPMP4LRMPg3rK4S5W17iS6NXGVz46uPMhSWwmcJg2bkJ/HK4XpSRhr1Rlzig== X-Received: by 2002:a50:fd83:: with SMTP id o3mr4918066edt.17.1603228239171; Tue, 20 Oct 2020 14:10:39 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:38 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 17/22] sub: simplify (x + y) - x --> y Date: Tue, 20 Oct 2020 23:10:16 +0200 Message-Id: <20201020211021.82394-18-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 8 ++++++++ validation/optim/simplify-same-add-subl.c | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 187d4fc0c9ab..cb401d8fac9f 100644 --- a/simplify.c +++ b/simplify.c @@ -1382,9 +1382,17 @@ static int simplify_add(struct instruction *insn) static int simplify_sub(struct instruction *insn) { + pseudo_t src1 = insn->src1; pseudo_t src2 = insn->src2; struct instruction *def; + switch (DEF_OPCODE(def, src1)) { + case OP_ADD: + if (def->src1 == src2) // (x + y) - x --> y + return replace_with_pseudo(insn, def->src2); + break; + } + switch (DEF_OPCODE(def, src2)) { case OP_NEG: // (x - -y) --> (x + y) insn->opcode = OP_ADD; diff --git a/validation/optim/simplify-same-add-subl.c b/validation/optim/simplify-same-add-subl.c index 1f17ef0b968e..394e7dc5a404 100644 --- a/validation/optim/simplify-same-add-subl.c +++ b/validation/optim/simplify-same-add-subl.c @@ -3,7 +3,6 @@ int add_subl(int x, int y) { return (x + y) - x; } /* * check-name: simplify-same-add-subl * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-start add_subl: From patchwork Tue Oct 20 21:10:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847935 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B00EC1580 for ; Tue, 20 Oct 2020 21:10:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 894EA2237B for ; Tue, 20 Oct 2020 21:10:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Hv+94FTB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438678AbgJTVKm (ORCPT ); Tue, 20 Oct 2020 17:10:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKm (ORCPT ); Tue, 20 Oct 2020 17:10:42 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B6B6CC0613CE for ; Tue, 20 Oct 2020 14:10:41 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id cm24so231465edb.0 for ; Tue, 20 Oct 2020 14:10:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i6FwKg1+QC+r/ssprlJGdvFWepCTp/uMRUnc9NEh0sI=; b=Hv+94FTBtUhno1Abq9T9zXsPmKh1/7mfwk+5SjPHBukKYtdR/ceA5/dT/7lhP0jvRE Le/tJ7MwNa2SBplqOsPXbPCXAdsFRe+IdFGW+e6Mm8trKUFgwqjygimxXDdq9Iuj0hwH Xo0fP+4kdWd+2dHTjGiXQlm9kXYLn4wQfsSRf7+1IPNii1df2w1aAx3X1aFgwKLLAqBF ggcYPIQwatAb2e3OAKKvvUu4/EmIObpPAulvjy7tZaFN+OTy7j0ARGw7aMxVhV4YMdLj e+ndNxmqjN9lelWz7vhoFmL5PTRzJZOsq9Vj7OfIwJ4EyW3IBGyekwArCzqXLj0f8WyY aQKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i6FwKg1+QC+r/ssprlJGdvFWepCTp/uMRUnc9NEh0sI=; b=SFiBq+Zb6mjZDvWONYod01+Ntnz2Kuv/dLjPUuTd8aZXGtNh5a+EQuXvvtk+6cTQT9 O2RlIPcl13qg1iADINZ25qKwpjdfI+mBLk6yJUoT0i9uq7LirZTpF/p6se9i9NclaD4H n/GBXWSLUlX/RWGH5fMdugbMgXc4U7b2WVGhYIa4sfmzMmOgHx6TGeQKBod2oMP3o741 HkIsLsAOO3B3cCuymG0P+KjeZQI7tNmsc+hKb0Gi9xBLcYP/DPtZBa8CUaWIh712gGHQ 4Sc6h2CuJc1vqlJeM8LcLY7Jjbejk4rxDLuMuI07CItNxhvAd2K9TgD0ng46BiwSMYeV V8Bw== X-Gm-Message-State: AOAM533+xij/z271QmMxVwFdXbDkE633Mrtn75RFB07BCCfKAA5C0/6F fNxysQpzyZ76ulUi9ACMYHso9LK7qW8= X-Google-Smtp-Source: ABdhPJx7bzsj3Dry7y49omY4sbvbeU2dxH7mTiLeZTnIlXmo8XhWrKoXMSEliPRrtAEDBBJxp6aSFA== X-Received: by 2002:aa7:d781:: with SMTP id s1mr4927256edq.102.1603228240237; Tue, 20 Oct 2020 14:10:40 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:39 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 18/22] sub: simplify (x + y) - y --> x Date: Tue, 20 Oct 2020 23:10:17 +0200 Message-Id: <20201020211021.82394-19-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 2 ++ validation/optim/simplify-same-add-subr.c | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index cb401d8fac9f..08b706ca8f41 100644 --- a/simplify.c +++ b/simplify.c @@ -1390,6 +1390,8 @@ static int simplify_sub(struct instruction *insn) case OP_ADD: if (def->src1 == src2) // (x + y) - x --> y return replace_with_pseudo(insn, def->src2); + if (def->src2 == src2) // (x + y) - y --> x + return replace_with_pseudo(insn, def->src1); break; } diff --git a/validation/optim/simplify-same-add-subr.c b/validation/optim/simplify-same-add-subr.c index e8540703ee7d..071021c485d7 100644 --- a/validation/optim/simplify-same-add-subr.c +++ b/validation/optim/simplify-same-add-subr.c @@ -3,7 +3,6 @@ int add_subr(int x, int y) { return (x + y) - y; } /* * check-name: simplify-same-add-subr * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-start add_subr: From patchwork Tue Oct 20 21:10:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847939 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D318D1580 for ; Tue, 20 Oct 2020 21:10:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AB76E223BF for ; Tue, 20 Oct 2020 21:10:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BitYzZB3" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438669AbgJTVKo (ORCPT ); Tue, 20 Oct 2020 17:10:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438680AbgJTVKo (ORCPT ); Tue, 20 Oct 2020 17:10:44 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 978FAC0613CE for ; Tue, 20 Oct 2020 14:10:42 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id h24so4835549ejg.9 for ; Tue, 20 Oct 2020 14:10:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=daEENoVXtJCtGpSewHDuWwUYs9cRkwFb1HtSCPa8Izo=; b=BitYzZB31kIo8RJBpCeuTeNNxQBl+rxQQ9wjPfXATAHaEeYu6Jkyro0rBq+lkrp7pB e1FFy2esWgvAa0q1qcdggsAXvoX1nKH8X+VUeu558R5ElAirIom4+uHC9xZrLbi/Napj 3BjZixftPLehA896+uLkrg2Tt3z3ECq4X/C5ApJ38Xn8I/H3Baf2MqTSn8berYpRQKAN PwQ7mk0cvdDKm06rjZvfkdWI4lj+8c32No9ZjpvZnFEVjvviOiDTDkRa9uYLOOS651U9 2yyz1eTVdguVnjqeJDFja+yfVE3wxM9mvgI/VM99ldZKkejCui/2k0WLS2/Vqw8mk4ym UPZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=daEENoVXtJCtGpSewHDuWwUYs9cRkwFb1HtSCPa8Izo=; b=nZhMhgueeRB8ePwiLXl06Ya5ropA7isjGUNSSZ9QwWUGMHpJvIdFhME/+AZX64ZK6w kJTLgD7zfQ5bLLrsTNWewjMzrS9dNTierD2om9NawkESR0MpG92S2yc0gUwD+u1or4z3 66MbTUKrjsiAEa/TCsq6n3dZqE3PnSKUzfe6eGFjf6VG0feQkEhnz65wdbYx5nTLsE5Z Pt//3iJKEDAN3wVVtdWNUbgM0leH6P7zk3obKv2pCzSmS7PLMi3pX8NOeqDgNTjCRQVf 8kN3q9czVXQGvlM7QrW/wbahzi6gd1FH6wAUTPS4oS8QeZiQg5RFIhMANgddPG5M3iZs attQ== X-Gm-Message-State: AOAM533ahYA0kx2saOY1/zTVrPfKkanvNIh5slv4OLObFb2uvojdk7dX s0fUmGGz2wtiXmgTXsaMDRjqUbWBMlM= X-Google-Smtp-Source: ABdhPJwwTFdatOEEoi/zsl8WbTiTtXEwMBh9wRvM2iZdfgYxkYuPS2oAvj6HtrSJMkDwS040C2TKWg== X-Received: by 2002:a17:906:b783:: with SMTP id dt3mr97910ejb.534.1603228241118; Tue, 20 Oct 2020 14:10:41 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:40 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 19/22] sub: simplify x - (x + y) --> -y Date: Tue, 20 Oct 2020 23:10:18 +0200 Message-Id: <20201020211021.82394-20-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 4 ++++ validation/optim/simplify-same-subl-add.c | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 08b706ca8f41..48bf48d29f9a 100644 --- a/simplify.c +++ b/simplify.c @@ -1396,6 +1396,10 @@ static int simplify_sub(struct instruction *insn) } switch (DEF_OPCODE(def, src2)) { + case OP_ADD: + if (src1 == def->src1) // x - (x + z) --> -z + return replace_with_unop(insn, OP_NEG, def->src2); + break; case OP_NEG: // (x - -y) --> (x + y) insn->opcode = OP_ADD; return replace_pseudo(insn, &insn->src2, def->src); diff --git a/validation/optim/simplify-same-subl-add.c b/validation/optim/simplify-same-subl-add.c index dbc0fe97f126..e7ae08092556 100644 --- a/validation/optim/simplify-same-subl-add.c +++ b/validation/optim/simplify-same-subl-add.c @@ -3,7 +3,6 @@ int subl_add(int x, int y) { return x - (x + y); } /* * check-name: simplify-same-subl-add * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: neg\\..* %arg2 From patchwork Tue Oct 20 21:10:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847937 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8C24B14B4 for ; Tue, 20 Oct 2020 21:10:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 666622237B for ; Tue, 20 Oct 2020 21:10:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gJSroswl" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438679AbgJTVKo (ORCPT ); Tue, 20 Oct 2020 17:10:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438669AbgJTVKn (ORCPT ); Tue, 20 Oct 2020 17:10:43 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71B17C0613D3 for ; Tue, 20 Oct 2020 14:10:43 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id qp15so4867119ejb.3 for ; Tue, 20 Oct 2020 14:10:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CoY/T3csZYJSTKEDx5YSw0U/P3BhQL13s5zAuN4J7WM=; b=gJSroswlDQqbOU8TPMvV0ju8haPb4PuQt3LuQmAjAVC5FZc+vgzqS858HC6IT6k4b0 TT+k9GEObRxAiXwY15aoWDcvTgeGZuQrlkzHFHtuDj5xfyTRXlivKBI2Ljk8ydRrC4x1 v65AEtsT+hAyOaKmIQu0PJyJMJdR/UzQ+97ZUsx6EkEr3XxHzaH7z0R92esyJOQGNCnx 5FC4SGpsuC2uRiLob1eIdddbrD7gUYt1zSZr6Y+b7YgcSDi1ON2a95/YLrhhCbc4ewhe hUZoGZp+CL5hOu28rPvKgEA0LICHKMkBVjMsvEDvIAi8yuaePeLcXa9Crzwq2G8Iflk4 Cz8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CoY/T3csZYJSTKEDx5YSw0U/P3BhQL13s5zAuN4J7WM=; b=a5tuDeO7Ji6iy/4ed9o4ucqal7M/oQRf+qkXQinuFUYsELt9WaJ0DTP5j+e6UK9oA9 Hg8Nhn8kWc0QZJP8Qo/1jjr0KowNoNG3uMInPjBGA8mg+iqpfs0LhA3VwD9L4fUMTvRQ a1np9MrwQ0FyT8qo763puCK79sb44PHHPwgzidE3w1MBwLEHnaRydqtHcBLFf90DbuLA +84ZQC59Z94Cb3fP0fvheoHqpyZHIYW0r8+Orxh0Ouj8GY74eThdIdLZBjGUFJTrkjov ruExoyWtDZ8Fi7QFPSAAJzsuLBkPVOPfVR03/STXs1op2Vc74sMMVIUMu/LU73BFAKvP 6cxg== X-Gm-Message-State: AOAM533kPXEqfEWYjGPNbaHYku6bHdrVdCyhU14QfS1zHPkvd/0H5nFv YCq/skbWi2h1XIzydkX7G7CrfDdZd4E= X-Google-Smtp-Source: ABdhPJyFX8Nsykgn5hLLHjegnB4IPONkYTQc2HA+zCg/pConF3qtGTUC43qdD/BLKx4Ggu/MzMXhqw== X-Received: by 2002:a17:906:a0cb:: with SMTP id bh11mr116112ejb.314.1603228241885; Tue, 20 Oct 2020 14:10:41 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:41 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 20/22] sub: simplify x - (y + x) --> -y Date: Tue, 20 Oct 2020 23:10:19 +0200 Message-Id: <20201020211021.82394-21-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 2 ++ validation/optim/simplify-same-subr-add.c | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 48bf48d29f9a..68ee6ed015c1 100644 --- a/simplify.c +++ b/simplify.c @@ -1399,6 +1399,8 @@ static int simplify_sub(struct instruction *insn) case OP_ADD: if (src1 == def->src1) // x - (x + z) --> -z return replace_with_unop(insn, OP_NEG, def->src2); + if (src1 == def->src2) // x - (y + x) --> -y + return replace_with_unop(insn, OP_NEG, def->src1); break; case OP_NEG: // (x - -y) --> (x + y) insn->opcode = OP_ADD; diff --git a/validation/optim/simplify-same-subr-add.c b/validation/optim/simplify-same-subr-add.c index bafd2643bfd0..950c55f67c24 100644 --- a/validation/optim/simplify-same-subr-add.c +++ b/validation/optim/simplify-same-subr-add.c @@ -3,7 +3,6 @@ int subr_add(int x, int y) { return x - (y + x); } /* * check-name: simplify-same-subr-add * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: neg\\..* %arg2 From patchwork Tue Oct 20 21:10:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847941 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2B5BF16BC for ; Tue, 20 Oct 2020 21:10:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 03FCD223BF for ; Tue, 20 Oct 2020 21:10:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eDt3JXNM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438681AbgJTVKo (ORCPT ); Tue, 20 Oct 2020 17:10:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438680AbgJTVKo (ORCPT ); Tue, 20 Oct 2020 17:10:44 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2A298C0613D3 for ; Tue, 20 Oct 2020 14:10:44 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id cq12so217685edb.2 for ; Tue, 20 Oct 2020 14:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3DyfCSukvkgBgS/0NnZtlzI8RhfeZrXwJ61em0Y0N9U=; b=eDt3JXNMiJL9RYaY8reFuqwIkblsHC4/v3ZfoKGkM1hPBk/DEVaZuSVtMA4SLu5vSx 9OQSieKNIHjWOuiWq/9fQASBkxohx7WA0g8JXhv9hp4lz0/QI9TKu+7ZWSssgEYmHLHr bsto6dwenrwvkbbu2Ebnx412BH4JS1erU0ydFTAZCF6bkrbJPi7SpuBwtg+1+KeaBjmf B+qbvdl2f3q4Hqp3ggA7sk/g1VuDlYemN88fHbS4Tu36n5ncgwojNTDbR77zInASERId I9a4O8J9uZJ7B5Z3ozhz1Yk4l8hpbYaoPXjRUYT9BnVq7Ab4yVOgEIF6dc9URwi3Lb4v MOgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3DyfCSukvkgBgS/0NnZtlzI8RhfeZrXwJ61em0Y0N9U=; b=oiGncxQnYBt9k+i//NaWR25syQqc7Kc++YoOrzQUVo40hYHIiVHX18iEmoB3PcmN3S iec9OVQSISTeVLXv74ZRlml1tXbyXgR4rfw7qN+WAjZ+O06RzQcjvA+YRMp61lnqtg/Y wPvLZAeVksHo3Zpp/2OZK1tTFzgXRJYzBRamShy39YX1jTuRNohhRVZpRXdQVQ1ShZd9 zYItV+3gMgVZtl3VcQmSQkkz9HTQx6EX4n/pvEF+hhzi8jn+HCpplVV/3pogOxItE4Tb WpEiYRRwoxctmvbusY9vZA65zp37t8Coe2ZYuSxwfszUK0I3yMAvsVvbadwV3cnCD3KY pdzg== X-Gm-Message-State: AOAM531EnZu3Z8oq7t1h7SyW/cKkHp7lUQnX+/HSCL2xXI3pt/OiPedS IZSUrul5pxWPkYdazDUYGlXVIZuJquU= X-Google-Smtp-Source: ABdhPJy2mhZ33PCmD94EkxgTcpYbiKD4sF2B/Om0NLEztIJjerLrKlJiM/1tAtw+tbcFX7K8KKr7Mw== X-Received: by 2002:aa7:c2ca:: with SMTP id m10mr4601339edp.255.1603228242666; Tue, 20 Oct 2020 14:10:42 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:42 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 21/22] sub: simplify (x - y) + y --> x Date: Tue, 20 Oct 2020 23:10:20 +0200 Message-Id: <20201020211021.82394-22-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 5 +++++ validation/optim/simplify-same-sub-addl.c | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 68ee6ed015c1..65fca35099a6 100644 --- a/simplify.c +++ b/simplify.c @@ -1369,6 +1369,11 @@ static int simplify_add(struct instruction *insn) switch_pseudo(insn, &insn->src1, insn, &insn->src2); insn->opcode = OP_SUB; return replace_pseudo(insn, &insn->src2, def->src); + + case OP_SUB: + if (def->src2 == src2) // (x - y) + y --> x + return replace_with_pseudo(insn, def->src1); + break; } switch (DEF_OPCODE(def, src2)) { diff --git a/validation/optim/simplify-same-sub-addl.c b/validation/optim/simplify-same-sub-addl.c index 78f217399e50..56b6fcc24e9d 100644 --- a/validation/optim/simplify-same-sub-addl.c +++ b/validation/optim/simplify-same-sub-addl.c @@ -3,7 +3,6 @@ int foo(int x, int y) { return (x - y) + y; } /* * check-name: simplify-same-sub-addl * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: ret\\..*%arg1 From patchwork Tue Oct 20 21:10:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 11847943 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BD74414B4 for ; Tue, 20 Oct 2020 21:10:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 957F82237B for ; Tue, 20 Oct 2020 21:10:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GF63IuJC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438682AbgJTVKp (ORCPT ); Tue, 20 Oct 2020 17:10:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2438680AbgJTVKp (ORCPT ); Tue, 20 Oct 2020 17:10:45 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D85E9C0613CE for ; Tue, 20 Oct 2020 14:10:44 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id t25so4822090ejd.13 for ; Tue, 20 Oct 2020 14:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=acKBIWcSTlmgsn/k2kkJrbhc96RJoNBv/HxBlb6i9tk=; b=GF63IuJCVwntSI3pYYl2QwEWP190iFuzpy/cVLHK7412eNFerdAL4m5fOIZQt5hlsN jPzD35cAfLvNuKZXkTJDgzGOTMpvLfZNBttrNOOowsHljMDjzCnyDVESzr1Ud3VEvpbW gmSOf6q5BZSpKOqhH6jCYYUDyYcA9nkhj2zk6jNFFyoVLzKkNIQMh7rnMin2DhLJc4qY P0EYDLAu67kjdCvz3NZnkE7S83j/Hv1XLE7dkFplWFFr2Q2Z+75hfcoaZyHc2Pcig9NB QM7aztstuOWu7LudOgv/unlvJ3yconBYY/f3GjEoDmXXXs8fv8zNcIJc6qyK41vRYinO hwvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=acKBIWcSTlmgsn/k2kkJrbhc96RJoNBv/HxBlb6i9tk=; b=Y5EbKTKi1aVLFKrSKdMW3jo4WJrEE5Akm1ldNbDAu9Ul2Z3xHDOdG8SmA41y6SgriY GMyNulWDHducxY5sK9UMBgDjVwZ5wFueiszRfi5I6aUrSAp+ifzFCpdzEHnabCbWI1uV lRtmoVqrX+gvh9igJqbs8A5UcQPBYMmPyuw8QyKBs2YZdfW+dqpEmzsiRRKYTGolwHJI 8TORoQJ8pIIUFIpu1zhE4KeRZPVZFazJYks+SVqIFXOFxkXsGUBH30u4E/5gZMVQeBwO 2slvBTnRNGKYhLtTeByoxx03KsAjMpVXda4o5iqLXphxpfIdgY4RvD8VwROtxxHn11Ra 2svw== X-Gm-Message-State: AOAM5334qgG894LyB/f2anLg5RaXyFgxAXuW9k0jOs+QdWK4kOVWux62 xWdjTLqlYZmxK7HHrTJqFR2YwsQBLfM= X-Google-Smtp-Source: ABdhPJw3KfCj3d7Qzc75mwT0QEzCZntQ1q6HSYiU5HUn5hRS96TiIwPdW4J0dHOCPt2ZCVwtUK+Gdg== X-Received: by 2002:a17:907:42fd:: with SMTP id oa21mr77097ejb.247.1603228243408; Tue, 20 Oct 2020 14:10:43 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:b7fe:f700:85fe:66cb:a92b:c664]) by smtp.gmail.com with ESMTPSA id d12sm4012848ejt.105.2020.10.20.14.10.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 14:10:42 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH 22/22] sub: simplify x + (y - x) --> y Date: Tue, 20 Oct 2020 23:10:21 +0200 Message-Id: <20201020211021.82394-23-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> References: <20201020211021.82394-1-luc.vanoostenryck@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org Signed-off-by: Luc Van Oostenryck --- simplify.c | 4 ++++ validation/optim/simplify-same-addl-sub.c | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/simplify.c b/simplify.c index 65fca35099a6..6caf6cbcf918 100644 --- a/simplify.c +++ b/simplify.c @@ -1380,6 +1380,10 @@ static int simplify_add(struct instruction *insn) case OP_NEG: // (x + -y) --> (x - y) insn->opcode = OP_SUB; return replace_pseudo(insn, &insn->src2, def->src); + case OP_SUB: + if (src1 == def->src2) // x + (y - x) --> y + return replace_with_pseudo(insn, def->src1); + break; } return 0; diff --git a/validation/optim/simplify-same-addl-sub.c b/validation/optim/simplify-same-addl-sub.c index 51d2b07966f4..9cca1d12ff92 100644 --- a/validation/optim/simplify-same-addl-sub.c +++ b/validation/optim/simplify-same-addl-sub.c @@ -3,7 +3,6 @@ int foo(int x, int y) { return x + (y - x); } /* * check-name: simplify-same-addl-sub * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-contains: ret\\..*%arg2