From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x531.google.com (mail-pg1-x531.google.com [IPv6:2607:f8b0:4864:20::531]) by sourceware.org (Postfix) with ESMTPS id 9F54E3857C44 for ; Wed, 9 Mar 2022 05:25:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9F54E3857C44 Received: by mail-pg1-x531.google.com with SMTP id q29so65067pgn.7 for ; Tue, 08 Mar 2022 21:25:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6krkO7/wasTkTa1TWzubEKStfZ8+P/yj4/RQsx9iod4=; b=7L2gMZDGdPX9opldMDjlsGFWNsjvC58ZOF/tghZT8AxWjqYZ3R+3bgVf7FHSHXw+3t vwjT12AstOaynqkorIzw/m4Pate0FrvTzgayggyZO8J1iPEzjP8cC+mah0uiHVzSEAgP wbY+1RzO+kteojlEvwWzotTU5soPjqDM0TPI4MwnNrhcoNLS2xTQ2+VAmoyO5JzeWyRD MK+JXYUiRTY9qRrALy4KUVYZ9h6VzkwKBXlNOJezL9vld2VA1JEWHwecI4iatRfZX57A LYvuWkMrlysam4iR6O0HCymM9zdImOTJMa4oJn9nOotEDx0g0NkMd2Nrd/tXAGfuu7Nd gi0g== X-Gm-Message-State: AOAM530LDlHy2WKUC5gljSC+X4/4osKPIunvTF/7B7i8WdbjMPFpTks+ oCSxDOK7wh4QHtxRlTamn1PYbUzgfWY= X-Google-Smtp-Source: ABdhPJxS8PSBZGnijiLEX5Y4T5VGjEcxqvYYtiWUZqIn0TTjREDuQPplZSmI+V09fDMaJLk+XbWFng== X-Received: by 2002:a05:6a00:1a0b:b0:4cf:9a9:5c5f with SMTP id g11-20020a056a001a0b00b004cf09a95c5fmr21971279pfv.45.1646803516400; Tue, 08 Mar 2022 21:25:16 -0800 (PST) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:aa4:674:e537:bdb6]) by smtp.gmail.com with ESMTPSA id z21-20020a17090a8b9500b001bf74f8bb3asm4671968pjn.24.2022.03.08.21.25.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Mar 2022 21:25:15 -0800 (PST) From: Alan Modra To: binutils@sourceware.org Subject: [PATCH 2/2] Constant fold view increment expressions Date: Wed, 9 Mar 2022 15:55:06 +1030 Message-Id: <20220309052506.4000271-3-amodra@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220309052506.4000271-1-amodra@gmail.com> References: <20220309052506.4000271-1-amodra@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3036.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Mar 2022 05:25:18 -0000 The idea here is to replace expressions like v + 1 + 1 + 1 with v + 3. * dwarf2dbg.c (set_or_check_view): Remove useless assertion. Resolve multiple view increments. * testsuite/gas/elf/dwarf2-18.d: Don't xfail mep. diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 7269c4cdf87..ba97b5f0126 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -402,18 +402,27 @@ set_or_check_view (struct line_entry *e, struct line_entry *p, if (viewx.X_op != O_constant || viewx.X_add_number) { expressionS incv; + expressionS *p_view; if (!p->loc.u.view) - { - p->loc.u.view = symbol_temp_make (); - gas_assert (!S_IS_DEFINED (p->loc.u.view)); - } + p->loc.u.view = symbol_temp_make (); memset (&incv, 0, sizeof (incv)); incv.X_unsigned = 1; incv.X_op = O_symbol; incv.X_add_symbol = p->loc.u.view; incv.X_add_number = 1; + p_view = symbol_get_value_expression (p->loc.u.view); + if (p_view->X_op == O_constant || p_view->X_op == O_symbol) + { + /* If we can, constant fold increments so that a chain of + expressions v + 1 + 1 ... + 1 is not created. + resolve_expression isn't ideal for this purpose. The + base v might not be resolvable until later. */ + incv.X_op = p_view->X_op; + incv.X_add_symbol = p_view->X_add_symbol; + incv.X_add_number = p_view->X_add_number + 1; + } if (viewx.X_op == O_constant) { diff --git a/gas/testsuite/gas/elf/dwarf2-18.d b/gas/testsuite/gas/elf/dwarf2-18.d index db7a4f9f20b..fbaebaa9019 100644 --- a/gas/testsuite/gas/elf/dwarf2-18.d +++ b/gas/testsuite/gas/elf/dwarf2-18.d @@ -2,9 +2,8 @@ #readelf: -x.rodata -wL #name: DWARF2 18 # The am33 cr16 crx ft32 mn10 msp430 nds32 and rl78 targets do not evaluate the subtraction of symbols at assembly time. -# The mep targets turns some view computations into complex relocations. # The riscv targets do not support the subtraction of symbols. -#xfail: am3*-* cr16-* crx-* ft32*-* mep-* mn10*-* msp430-* nds32*-* riscv*-* rl78-* +#xfail: am3*-* cr16-* crx-* ft32*-* mn10*-* msp430-* nds32*-* riscv*-* rl78-* Hex dump of section '\.rodata': 0x00000000 0100 *.*