From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by sourceware.org (Postfix) with ESMTPS id DF247383236F for ; Thu, 8 Dec 2022 10:40:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DF247383236F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x62c.google.com with SMTP id t17so2897539eju.1 for ; Thu, 08 Dec 2022 02:40:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=EMSboSqJSoWxGOeXOsy61GIyP8GkVX8LFzSbIbZT/vw=; b=KArQrkrhyU1W1IaRLZsh8PJrfGjRKbNGt8axbQu6cnhVqkeNd/9+5+ALhOq52LwX3P 9ypMh91iy3uxqGuX+U0jYR913SeWb8Md7+VadjTFwPJlgAy/htfeDDYrZSGVQWkG5EFr 6CfbZPueWuT6j0Tjn+zAY92BlxDqMNHblhVe1R9RhGcDLd8bXx0muiRVp6qEP2F8zkR2 eMZEAvmeVvNEfmaAL1oY6Xo1eVZRpUhqK26LkQ9ekPcVgALcZk5UWq9H0ZcgKsCAo/sQ vVnpLqz9coM0Sc3NlP+eyhrveMTIaCp41nszVp46iL9/cHwsLj1A1PMq33N4yqtyjN/b C+HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=EMSboSqJSoWxGOeXOsy61GIyP8GkVX8LFzSbIbZT/vw=; b=GOA91HJvQIe3dWFzzSzf0Cr2+EqfnwDOtJvkxCOhMwLlf1lsfQHA1aBQwWIGWhFaHV g5fxESq2pOwrh/m4aQTIMFS88w4tKwyAccU30O8CIDKC9H69G8WGF2beCmDLir16Cif5 vnBCVmElBcAd7ZP3Lr6lwedxnBCU7yM17C/VJSFUzhGX/TAUJV/eLA5h240VJlcdmYE6 m2PwE/y+Sc/eR/QcDQMxKES9MDsl82wUgCCEvbow6Zh3mGOuyIivriIxgslc7Odvs1CH JaU4q4KSnHvW4TzwFOftSSAEkKlnk0ojaw/YX0KOmAP0KNY2GTlGm801crFrYo+yXzOz i+Jw== X-Gm-Message-State: ANoB5pnqa6b0m0w5VZ7+ZoOZ8FYK6hdfKsw+XuLDKDxNJJeh6xcNLRme xzmRrJxOH6WprwG6sm0slIJHKC78T4OeTbUh6OKjrkYDFnU+XHxG X-Google-Smtp-Source: AA0mqf7Pfz1t0nn6mrdmKQ9RfX7tjB/sHvLPKxd5nJ9QHF+wqMzBltVCfie4yw2JPR8vry1hckCpmbahjZArNab4vww= X-Received: by 2002:a17:907:c787:b0:7ad:8035:ae3d with SMTP id tz7-20020a170907c78700b007ad8035ae3dmr22082233ejc.46.1670496013097; Thu, 08 Dec 2022 02:40:13 -0800 (PST) MIME-Version: 1.0 From: Claudiu Zissulescu Ianculescu Date: Thu, 8 Dec 2022 12:40:01 +0200 Message-ID: Subject: Possible regression in DF analysis To: gcc@gcc.gnu.org Content-Type: multipart/mixed; boundary="00000000000075effb05ef4ea963" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000075effb05ef4ea963 Content-Type: text/plain; charset="UTF-8" Hi, I've stumbled over a potential issue related to Dataflow analysis, and maybe you can help me with it. It can be reproduced for AARCH64 but other architectures are affected as well. I have the next snip before CSE1 pass: (insn 14 11 15 3 (set (reg:CC 66 cc) (compare:CC (reg/v:SI 98 [ bytes ]) (const_int 8 [0x8]))) "bad_cc.c":11:8 406 {cmpsi} (nil)) (jump_insn 15 14 16 3 (set (pc) (if_then_else (gtu (reg:CC 66 cc) (const_int 0 [0])) (label_ref 27) (pc))) "bad_cc.c":11:8 15 {condjump} (int_list:REG_BR_PROB 955630228 (nil)) -> 27) (note 16 15 17 4 [bb 4] NOTE_INSN_BASIC_BLOCK) (insn 17 16 18 4 (set (reg:CC 66 cc) (compare:CC (reg/v:SI 98 [ bytes ]) (const_int 8 [0x8]))) "bad_cc.c":12:10 406 {cmpsi} (nil)) (jump_insn 18 17 19 4 (set (pc) (if_then_else (eq (reg:CC 66 cc) (const_int 0 [0])) (label_ref:DI 34) (pc))) "bad_cc.c":12:10 15 {condjump} (int_list:REG_BR_PROB 365072228 (nil)) -> 34) The CSE1 optimizes the second comparison (i.e., INSN 17) as it is similar with the one from INSN 14. However, after this optimization I get the CC reg being dead after JUMP_INSN 15, which may lead to wrong code gen. Here it is the dump from fwprop1: (insn 14 11 15 3 (set (reg:CC 66 cc) (compare:CC (reg/v:SI 98 [ bytes ]) (const_int 8 [0x8]))) "bad_cc.c":11:8 406 {cmpsi} (nil)) (jump_insn 15 14 16 3 (set (pc) (if_then_else (gtu (reg:CC 66 cc) (const_int 0 [0])) (label_ref 27) (pc))) "bad_cc.c":11:8 15 {condjump} (expr_list:REG_DEAD (reg:CC 66 cc) (int_list:REG_BR_PROB 955630228 (nil))) -> 27) (note 16 15 18 4 [bb 4] NOTE_INSN_BASIC_BLOCK) (jump_insn 18 16 19 4 (set (pc) (if_then_else (eq (reg:CC 66 cc) (const_int 0 [0])) (label_ref:DI 34) (pc))) "bad_cc.c":12:10 15 {condjump} (expr_list:REG_DEAD (reg:CC 66 cc) (int_list:REG_BR_PROB 365072228 (nil))) -> 34) Please observe the REG_DEAD note on the both jump instructions. I see this behaviour in GCC 12.2.1 release for AARCH64, but I cannot see it for GCC 10.x A test code snip is attached, and it needs to be compiled with aarch64 backend using -Os option. --00000000000075effb05ef4ea963 Content-Type: text/x-csrc; charset="US-ASCII"; name="bad_cc.c" Content-Disposition: attachment; filename="bad_cc.c" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbey54340 dHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50 OF90OwoKdm9pZCBmb28gKHVpbnQzMl90ICpzcmMsIHVpbnQ4X3QgKmMsIHVpbnQzMl90IGJ5dGVz KQp7CiAgdWludDhfdCAqY3RhcmdldDsKCiAgZm9yICg7OykgewogICAgY1swXSA9IHNyY1swXSAm IDB4ZmY7CgogICAgaWYgKGJ5dGVzIDw9IDgpIHsKICAgICAgaWYgKGJ5dGVzIDwgOCkgewoJIGN0 YXJnZXRbNF0gPSBjWzRdOwogICAgICB9CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBieXRlcyAt PSA4OwogICAgYyArPSA4OwogIH0KfQoK --00000000000075effb05ef4ea963--