From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by sourceware.org (Postfix) with ESMTPS id 87D3F3858409 for ; Mon, 22 Jan 2024 07:35:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 87D3F3858409 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 87D3F3858409 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::135 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705908906; cv=none; b=mto5P9jOxSbWedL6+Fn7vXgOOQUqY1/ZOo/BxjhwJjsaL5FIGHuhCuLGw96Hw8rY71rNKdb3+1u1spKcH27wTwJQUeq1ZbJ6/qE1AJCrujfrborWcf6Vc90EfjHvKZGAuFsNLq7qvKZwSc6XSTHo33oD1d5Yp2jJbBjqCQ/cZss= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705908906; c=relaxed/simple; bh=IfCmVrD50C5ccPUHfikpuy80dBNFI6QBuKde9a0qRwc=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=ZfHHP32/QLgMXIqR+hhMg4dTZrNZEBrg8sShtztMP9FVWiHU2AflsjNPFJhczvjyRhx+wW+JmW187Ye6OWZZUluzdvrTny9GONivDocpf53oeoVKvm06ZLP/XDLhofsuIUNWDtHbf5IIRTegmLxOLCHoLnca7rvytFo8sE13q2w= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-50e7b273352so2641807e87.1 for ; Sun, 21 Jan 2024 23:35:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705908903; x=1706513703; darn=gcc.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Dd4g4K0oYO3Cf1CD9Y2bzHENX+b70Gl+g1Q7UTSajls=; b=BmiGWdlJxn93KfJ4Wo6eGBc+fXw9aNPheJXSilgSQESOiQL6Yqy11IEUBKFIJNReR0 vumy5u1WiPQY1UZJrs8TKYs7Y4h5Zj9vx3xJa3MU07e/lMtExaexu2GQhPAi4SkRg6/R rwHYq7MUOS62QMA4n9nJinGO7xSVb/FJ4elYtXj2p0DpB8WayUBCNEr+4K6+r89pSbdI 0OsYUOuP8F07MXvWg9N/gF35ofriGFF8HhfxtBqeoGpftWLldeQO0Y0vtCHInAJugyWR Wu7/JzsIoNVOFddGDY7QbjYarPKFVw0loCJ5hG8nG6ZSIjn2cO7L6TtdQ/s2mz7EYaYF TDqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705908903; x=1706513703; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Dd4g4K0oYO3Cf1CD9Y2bzHENX+b70Gl+g1Q7UTSajls=; b=SyZXBGTA3pFQtGMsrNB7l4mN+UQondVUGjhLM5Q8XpPp2XMmT1uk8wnZlQUkDUjB2D p1CSAHszj+gdU/WqU0fDREvk2ABOT1taCYIZscf/wMiKNTiBxeyF/tTnnf3o6bJz4dE6 UK1pjD9uDTgJ3t8covMKBFHscxXGPtuB2khPXG2OmvVEdKkahh2vt4bwBy8cVKvxq18e 45YgX+E+0LOg4R1TEjSoRI7Bzv49+q0gb8XRuPk3+6S0H9hHyUNZKpmDkUu7v2eMxGXI XYd2uCITiZPRtbYATv1lzsyDPg0teqUp8unITimcdMrXxvhDu50keNcS0IIfv8J7V2K9 to8w== X-Gm-Message-State: AOJu0YzyUFZomM9RjFwEqRCUMwg79VscSqWvK/ocKHWiBKaBntNviIPw ytwrMDZ4viXmkUULbgamwftNtni5q9djJ8SRj+6rd0sKSwSSbZZLwwDoAoqhRQMVNiPlxAZOOhI 2GZK3r4dGW1B3rwJdGZ1P0hRqerA= X-Google-Smtp-Source: AGHT+IEhUwhLH+kRFYrqwKxIjkj/B4bc/NAnbEoHs2yExjBVkYKLJluxIny4OkoAct0ecXIvddKIc/DTUZRzyam/Qfc= X-Received: by 2002:a05:6512:1582:b0:50e:55bb:a453 with SMTP id bp2-20020a056512158200b0050e55bba453mr1561162lfb.3.1705908902476; Sun, 21 Jan 2024 23:35:02 -0800 (PST) MIME-Version: 1.0 References: <20240121133239.45A0B20422@pchp3.se.axis.com> In-Reply-To: <20240121133239.45A0B20422@pchp3.se.axis.com> From: Richard Biener Date: Mon, 22 Jan 2024 08:33:47 +0100 Message-ID: Subject: Re: [PATCH] c/c++: Tweak warning for 'always_inline function might not be inlinable' To: Hans-Peter Nilsson , Jan Hubicka Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: On Sun, Jan 21, 2024 at 2:33=E2=80=AFPM Hans-Peter Nilsson wr= ote: > > Tested x86_64-linux-gnu. Ok to commit? > > Or, does the message need more tweaking? > (If so, suggestions from native speakers?) > FWIW, I found no PR for just the message being bad. > > -- >8 -- > When you're not regularly exposed to this warning, it is > easy to be misled by its wording, believing that there's > something else in the function that stops it from being > inlined, than the lack of also being *declared* inline. > > It's just a warning: without the inline directive, there has > to be a secondary reasons for the function to be inlined, > than the always_inline attribute, reasons that may be in > effect despite the warning. > > Whenever the text is quoted in inline-related bugzilla > entries, there seems to often have been an initial step of > confusion that has to be cleared, for example in PR55830. > The powerpc test-case in this patch where a comment is > adjusted, seems to be another example, and I testify as the > first-hand third "experience". The wording has been the > same since the warning was added. > > Let's just tweak the wording, adding the cause, so that the > reason for the warning is clearer. This hopefully stops the > user from immediately asking "'Might'? Because why?" and > then going off looking at the function body - or grepping > the gcc source or documentation, or enter a bug-report > subsequently closed as resolved/invalid. > > gcc: > * cgraphunit.cc (process_function_and_variable_attributes): Tweak > the warning for an attribute-always_inline without inline declara= tion. > > gcc/testsuite: > * g++.dg/Wattributes-3.C: Adjust expected warning. > * gcc.dg/fail_always_inline.c: Ditto. > * gcc.target/powerpc/vec-extract-v16qiu-v2.h: Adjust > quoted warning in comment. > --- > gcc/cgraphunit.cc | 3 ++- > gcc/testsuite/g++.dg/Wattributes-3.C | 4 ++-- > gcc/testsuite/gcc.dg/fail_always_inline.c | 2 +- > gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h | 2 +- > 4 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/gcc/cgraphunit.cc b/gcc/cgraphunit.cc > index 38052674aaa5..89dc1af522a4 100644 > --- a/gcc/cgraphunit.cc > +++ b/gcc/cgraphunit.cc > @@ -918,7 +918,8 @@ process_function_and_variable_attributes (cgraph_node= *first, > /* redefining extern inline function makes it DECL_UNINLINABLE.= */ > && !DECL_UNINLINABLE (decl)) > warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wattributes, > - "% function might not be inlinable"); > + "% function is not always inlined" > + " unless also declared %"); I don't like the "is not always inlined", maybe simply reword to "% function might not be inlinable" " unless also declared %" ? > > process_common_attributes (node, decl); > } > diff --git a/gcc/testsuite/g++.dg/Wattributes-3.C b/gcc/testsuite/g++.dg/= Wattributes-3.C > index 208ec6696551..4adf0944cd4f 100644 > --- a/gcc/testsuite/g++.dg/Wattributes-3.C > +++ b/gcc/testsuite/g++.dg/Wattributes-3.C > @@ -26,7 +26,7 @@ B::operator char () const { return 0; } > > ATTR ((__noinline__)) > B::operator int () const // { dg-warning "ignoring attribute .noinl= ine. because it conflicts with attribute .always_inline." } > -// { dg-warning "function might not be inlinable" "" { target *-*-* } .-= 1 } > +// { dg-warning "function is not always inlined unless also declared .in= line." "" { target *-*-* } .-1 } > > { > return 0; > @@ -45,7 +45,7 @@ C::operator char () { return 0; } > > ATTR ((__noinline__)) > C::operator short () // { dg-warning "ignoring attribute .noin= line. because it conflicts with attribute .always_inline." } > -// { dg-warning "function might not be inlinable" "" { target *-*-* } .-= 1 } > +// { dg-warning "function is not always inlined unless also declared .in= line." "" { target *-*-* } .-1 } > { return 0; } > > inline ATTR ((__noinline__)) > diff --git a/gcc/testsuite/gcc.dg/fail_always_inline.c b/gcc/testsuite/gc= c.dg/fail_always_inline.c > index 86645b850de8..2f48d7f5c6be 100644 > --- a/gcc/testsuite/gcc.dg/fail_always_inline.c > +++ b/gcc/testsuite/gcc.dg/fail_always_inline.c > @@ -2,7 +2,7 @@ > /* { dg-add-options bind_pic_locally } */ > > extern __attribute__ ((always_inline)) void > - bar() { } /* { dg-warning "function might not be inlinable" } */ > + bar() { } /* { dg-warning "function is not always inlined unless also d= eclared .inline." } */ > > void > f() > diff --git a/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h b/g= cc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h > index d1157599ee7c..b9800e1c950d 100644 > --- a/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h > +++ b/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h > @@ -179,7 +179,7 @@ get_auto_15 (vector TYPE a) > #ifdef DISABLE_INLINE_OF_GET_AUTO_N > __attribute__ ((__noinline__)) > #else > -/* gcc issues warning: always_inline function might not be inlinable > +/* gcc issues warning: always_inline function is not always inlined unle= ss also declared inline > > __attribute__ ((__always_inline__)) > */ > -- > 2.30.2 >