From patchwork Fri May 3 16:58:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georg-Johann Lay X-Patchwork-Id: 1931125 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gjlay.de header.i=@gjlay.de header.a=rsa-sha256 header.s=strato-dkim-0002 header.b=LhxRbAWP; dkim=pass header.d=gjlay.de header.i=@gjlay.de header.a=ed25519-sha256 header.s=strato-dkim-0003 header.b=1+syEBlH; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VWH814gTFz20fW for ; Sat, 4 May 2024 02:58:56 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 683493846062 for ; Fri, 3 May 2024 16:58:54 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [85.215.255.24]) by sourceware.org (Postfix) with ESMTPS id 3C25E384AB58 for ; Fri, 3 May 2024 16:58:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3C25E384AB58 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gjlay.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=gjlay.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3C25E384AB58 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=85.215.255.24 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1714755515; cv=pass; b=kCti4SkKZ8VqwcZtgHMzTge89G5BPa2o9IxuiHCRTO9qOIaM6HKiyikMHIrzjVNSuvkG1I7rW+2E8pX1eRfzes/57e6LW8JkK0AYMmefNFBSfCuNo0ypSV1315nTVL8At64g0GVunUmtbk6awHu/qUsZTIJiazMC5aG/S9h7UvA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1714755515; c=relaxed/simple; bh=v5rYFByI6vREEZbbWqGVrh88qxBvVjWKKs3AJrJvpw4=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version:From: To:Subject; b=IgLN3OS9ZYnS3TVe+ICAEUL8QbF/CkAgoLtsuGcKI5j9gTwqzvfeX6QtnO6ncCe4qBZSlWGXggL2OASOOmbh7Z1/wZYl8JN0tL7/U8Ca+1vwa/MJtfRIRB5nnRgmmCm6Htfos2ZWzY1aeq0PHCQMXWEy3wpkw8Fn+RGi83oTYn0= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1714755511; cv=none; d=strato.com; s=strato-dkim-0002; b=gq9AyCgh7XNBaTMapDxjJj2gBDkys6fUNYZWboAAByH/BqHp0iy/FaHKigHbvEVfN9 KHyOt2NoTOubB6cizU9PcfonugteccSppf+CpiE++szdkjpohdRQfC4sWgOzaietcgTP V1QD0mSrSUXbvSC/XIMCuesOeB7iR1wKLrSqKVM9iBB4CUdlPAH6TSUfhF5UiXaVKzap +59gYVpDJzaO3lLtOxCXxr3airgW3G+v7104VX1faAtb/1yOPVDK4qqprGFQpw/S/v8U nAieJcxkMcIoCEPb9jZ7lL2cIqhZTVsHurADXdo+L8nGtQQ9dSHO12MsNVLtcYTu9Lyt 6zyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1714755511; s=strato-dkim-0002; d=strato.com; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SZt4O0V7NX82q0y65BRurNfbonnO2gTT4qhssz8WDiQ=; b=iyXFNYgeJk+HsSDUlQe5zCVROtNCSpSwj0S5HPmAeOlbj/xz/Lr90RDKXYiKHFvN80 5hv9UokYR/e2OdsnXEzwdLN0GuQjiV9udV9nU409GkHnYYI2cWx/ZMmw/Rq7eWXUvs5r wLYkvUfo09et6hTcI6p+Q2ZREWrMFkixaYnu/49f73bJjIRaCL4iU4XUbf8USp3GUT4N zdi1iIP9WhArrU+T5OSq/piCNrn/6l9QIqtyo8pNuA58WFpLy912c+kxjYIgd+xjCQKf wppjsPbHPTVLnXiwrT6pdVbXBELwegbDCNNpTfSQtUEcbLxnjUR0ukk2B5BjwfxgTw4b wE+g== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1714755511; s=strato-dkim-0002; d=gjlay.de; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SZt4O0V7NX82q0y65BRurNfbonnO2gTT4qhssz8WDiQ=; b=LhxRbAWP94nt7D/dYG83BOQyq3svPwFlxxOI6b0ZzWWCtMSs63Boe59RRME6flhgD8 9330tAGSNhq20dv1wTZNezF6cc97UVombDk6rELFOzWdSlN/CMPROoxO8MoJHdb22/6c LEw9AM/AUwUH02kHdQc5H0WE54oXsUXG4J0FeZNskwxCUJlsak461flHU1ABK5vaBsDw m24hMQk8IFZwS0VyfRXWWKJ+JeWjYyf/fRh0McvS0sNvOCbrTwJSKPX/xnfHOwWlh2yo IsCi1RwHgQLOATzpyg/V2GO1m9ZqfTrQZYu12L83MqmsCmIJZPgtxrLSemmwD6y6HgXG v71g== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1714755511; s=strato-dkim-0003; d=gjlay.de; h=Subject:To:From:Date:Message-ID:Cc:Date:From:Subject:Sender; bh=SZt4O0V7NX82q0y65BRurNfbonnO2gTT4qhssz8WDiQ=; b=1+syEBlHhxzz5CLSFdtleO32OCE4eAuqGxH++jxwCQt6uFBYgH8G852gzkgthl4Ol3 eIQBW4ZdUhaw7QSmSbDg== X-RZG-AUTH: ":LXoWVUeid/7A29J/hMvvT3koxZnKT7Qq0xotTetVnKkbgtK4q2y4KBIJzcU=" Received: from [192.168.2.102] by smtp.strato.de (RZmta 50.5.0 DYNA|AUTH) with ESMTPSA id xcdf44043GwVcUI (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate) for ; Fri, 3 May 2024 18:58:31 +0200 (CEST) Message-ID: Date: Fri, 3 May 2024 18:58:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Georg-Johann Lay Content-Language: en-US To: "gcc-patches@gcc.gnu.org" Subject: [patch,avr,applied] PR92606: Don't optimize PROGMEM data against non-PROGMEM X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Applied to fix this long standing wrong-code bug. Johann diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc index 510e4cea19f..74924ab0565 100644 --- a/gcc/config/avr/avr.cc +++ b/gcc/config/avr/avr.cc @@ -1140,6 +1140,12 @@ avr_option_override (void) if (targetm.addr_space.zero_address_valid (ADDR_SPACE_GENERIC)) flag_delete_null_pointer_checks = 0; + /* PR ipa/92606: Inter-procedural analysis optimizes data across + address-spaces and PROGMEM. As of v14, the PROGMEM part is + still not fixed (and there is still no target hook as proposed + in PR92932). Just disable respective bogus optimization. */ + flag_ipa_icf_variables = 0; + if (flag_pic == 1) warning (OPT_fpic, "%<-fpic%> is not supported"); if (flag_pic == 2) diff --git a/gcc/testsuite/gcc.target/avr/torture/pr92606.c b/gcc/testsuite/gcc.target/avr/torture/pr92606.c new file mode 100644 index 00000000000..cc07128c73b --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/pr92606.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ + +typedef __UINT16_TYPE__ uint16_t; +typedef __UINT32_TYPE__ uint32_t; + +typedef uint32_t T; + +#define NI __attribute__((noinline,noclone)) + + +#ifndef __AVR_TINY__ +#define read_u32(X) \ + (__extension__( \ + { \ + uint16_t __addr16 = (uint16_t)(X); \ + uint32_t __result; \ + __asm__ __volatile__ ("lpm %A0, Z+" "\n\t" \ + "lpm %B0, Z+" "\n\t" \ + "lpm %C0, Z+" "\n\t" \ + "lpm %D0, Z" "\n\t" \ + : "=r" (__result), "+z" (__addr16)); \ + __result; \ + })) +#else +NI uint32_t read_u32 (const uint32_t *p) +{ + return *p; +} +#endif + +static const __attribute((progmem)) T xyz_prog[] = { 123, 123, 123 }; +T xyz[] = { 123, 123, 123 }; +volatile int x = 0; + +NI void prf (T f) +{ + if (f != 123) + __builtin_abort(); +} + +NI void func_progmem() +{ + prf (read_u32 (&xyz_prog[0])); +} + +NI void func_ram() +{ + prf (xyz[x]); +} + +int main (void) +{ + func_progmem(); + func_ram(); + + return 0; +}