From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 60DC83858C52; Wed, 6 Apr 2022 09:17:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 60DC83858C52 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/105175] [12 Regression] Pointless warning about missed vector optimization Date: Wed, 06 Apr 2022 09:17:45 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: diagnostic, missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Apr 2022 09:17:45 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D105175 Richard Biener changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmalcolm at gcc dot gnu.or= g, | |msebor at gcc dot gnu.org --- Comment #4 from Richard Biener --- @item -Wvector-operation-performance @opindex Wvector-operation-performance @opindex Wno-vector-operation-performance Warn if vector operation is not implemented via SIMD capabilities of the architecture. Mainly useful for the performance tuning. Vector operation can be implemented @code{piecewise}, which means that the scalar operation is performed on every vector element; @code{in parallel}, which means that the vector operation is implemented using scalars of wider type, which normally is more performance efficient; and @code{as a single scalar}, which means that vector fits into a scalar type. -- So the point is the vector lowering pass cannot distinguish people writing typedef int v2si __attribute__((vector_size(8))); v2si a, b; void foo() { a &=3D b; } and the vectorizer producing such code. So technically the diagnostic is correct but it was the vectorizer producing the operation. So a proper way would be to suppress OPT_Wvector_operation_performance for the vectorizer generated stmt. Unfortunately if (using_emulated_vectors_p) suppress_warning (new_stmt, OPT_Wvector_operation_performance); will not magically make warning_at (loc, OPT_Wvector_operation_performance, "vector operation will be expanded with a " "single scalar operation"); not warn. suppress_warning_at returns true, and supp is true as well (that parameter is not documented as far as I can see). So we need to guard all the warning_at with stmt-based warning_suppressed_p and there's no warning_at overload with a gimple * as location that would automagically do that it seems? There is one with rich_location * but AFAIK that doesn't cover gimple * or tree. I'm testing a patch that is IMHO too verbose (adjusting all warning_at in tree-vect-generic.cc).=