Re: git: d9b272a19d39 - main - Merge commit 871038759afb from llvm git (by Marco Elver):

From: Cy Schubert <Cy.Schubert_at_cschubert.com>
Date: Fri, 08 May 2026 23:49:47 UTC
In message <C8246DBC-E63E-4FBF-95F4-48456F69A409@FreeBSD.org>, Dimitry 
Andric w
rites:
> On 9 May 2026, at 00:51, Cy Schubert <Cy.Schubert@cschubert.com> wrote:
> >=20
> > In message <69fe2846.42ccf.7f445ce5@gitrepo.freebsd.org>, Dimitry =
> Andric writes
> > :
> >> The branch main has been updated by dim:
> >>=20
> >> URL: =
> https://cgit.FreeBSD.org/src/commit/?id=3Dd9b272a19d39f71665b529860bfed731=
>
> >> bcfd99f5
> >>=20
> >> commit d9b272a19d39f71665b529860bfed731bcfd99f5
> >> Author:     Dimitry Andric <dim@FreeBSD.org>
> >> AuthorDate: 2026-05-08 17:59:54 +0000
> >> Commit:     Dimitry Andric <dim@FreeBSD.org>
> >> CommitDate: 2026-05-08 17:59:54 +0000
> >>=20
> >>    Merge commit 871038759afb from llvm git (by Marco Elver):
> >>=20
> >>      Thread Safety Analysis: Fix pointer handling of variables with =
> deprecat
> >> ed attributes (#148974)
> >>=20
> >>      de10e44b6fe7 ("Thread Safety Analysis: Support warning on
> >>      passing/returning pointers to guarded variables") added checks =
> for
> >>      passing pointer to guarded variables. While new features do not
> >>      necessarily need to support the deprecated attributes =
> (`guarded_var`,
> >>      and `pt_guarded_var`), we need to ensure that such features do =
> not caus
> >> e
> >>      the compiler to crash.
> >>=20
> >>      As such, code such as this:
> >>=20
> >>              struct {
> >>                int v __attribute__((guarded_var));
> >>              } p;
> >>=20
> >>              int *g() {
> >>                return &p.v;  // handleNoMutexHeld() with =
> POK_ReturnPointer
> >>              }
> >>=20
> >>      Would crash in debug builds with the assertion in =
> handleNoMutexHeld()
> >>      triggering. The assertion is meant to capture the fact that this =
> helper
> >>      should only be used for warnings on variables (which the =
> deprecated
> >>      attributes only applied to).
> >>=20
> >>      To fix, the function handleNoMutexHeld() should handle all POK =
> cases
> >>      that apply to variables explicitly, and produce a best-effort =
> warning.
> >>=20
> >>      We refrain from introducing new warnings to avoid unnecessary =
> code bloa
> >> t
> >>      for deprecated features.
> >>=20
> >>      Fixes: https://github.com/llvm/llvm-project/issues/140330
> >>=20
> >>    This fixes an assertion while building the net/openvswitch port:
> >>    "Assertion failed: ((POK =3D=3D POK_VarAccess || POK =3D=3D =
> POK_VarDereference)
> >>    && "Only works for variables"), function handleNoMutexHeld, file
> >>    =
> /usr/src/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp,
> >>    line 2120.'
> >>=20
> >>    Reported by:    cy
> >>    PR:             295101, 292067
> >>    MFC after:      1 month
> >> ---
> >> .../clang/lib/Sema/AnalysisBasedWarnings.cpp       | 25 =
> +++++++++++++++++---
> >> --
> >> 1 file changed, 20 insertions(+), 5 deletions(-)
> >>=20
> >> diff --git =
> a/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp b/
> >> contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp
> >> index ec39bca6039f..ab55cbceeaa8 100644
> >> --- a/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp
> >> +++ b/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp
> >> @@ -2116,11 +2116,26 @@ class ThreadSafetyReporter : public =
> clang::threadSafe
> >> ty::ThreadSafetyHandler {
> >>=20
> >>   void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind =
> POK,
> >>                          AccessKind AK, SourceLocation Loc) override =
> {
> >> -    assert((POK =3D=3D POK_VarAccess || POK =3D=3D =
> POK_VarDereference) &&
> >> -           "Only works for variables");
> >> -    unsigned DiagID =3D POK =3D=3D POK_VarAccess?
> >> -                        diag::warn_variable_requires_any_lock:
> >> -                        diag::warn_var_deref_requires_any_lock;
> >> +    unsigned DiagID =3D 0;
> >> +    switch (POK) {
> >> +    case POK_VarAccess:
> >> +    case POK_PassByRef:
> >> +    case POK_ReturnByRef:
> >> +    case POK_PassPointer:
> >> +    case POK_ReturnPointer:
> >> +      DiagID =3D diag::warn_variable_requires_any_lock;
> >> +      break;
> >> +    case POK_VarDereference:
> >> +    case POK_PtPassByRef:
> >> +    case POK_PtReturnByRef:
> >> +    case POK_PtPassPointer:
> >> +    case POK_PtReturnPointer:
> >> +      DiagID =3D diag::warn_var_deref_requires_any_lock;
> >> +      break;
> >> +    case POK_FunctionCall:
> >> +      llvm_unreachable("Only works for variables");
> >> +      break;
> >> +    }
> >>     PartialDiagnosticAt Warning(Loc, S.PDiag(DiagID)
> >>       << D << getLockKindFromAccessKind(AK));
> >>     Warnings.emplace_back(std::move(Warning), getNotes());
> >>=20
> >=20
> > After updating the system and the poudriere jail it's still =
> experiencing the same
> > issue. A Snippet of poudriere output below.
> >=20
> > /bin/sh ./libtool  --tag=3DCC   --mode=3Dcompile cc -DHAVE_CONFIG_H =
> -I.    -I ./include -I ./include -I ./lib -I ./lib -I/usr/include   =
> -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith =
> -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter =
> -Wbad-function-cast -Wcast-align -Wstrict-prototypes =
> -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers =
> -Wthread-safety -fno-strict-aliasing -Wswitch-bool =
> -Wlogical-not-parentheses -Wsizeof-array-argument -Wshift-negative-value =
> -Qunused-arguments -Wshadow -Wno-null-pointer-arithmetic =
> -Warray-bounds-pointer-arithmetic    -O2 -pipe =
> -Wno-misleading-indentation -Wno-tautological-overlap-compare =
> -Wno-unused-but-set-variable -Wno-deprecated-literal-operator =
> -Wno-misleading-indentation -Wno-tautological-overlap-compare =
> -Wno-unused-but-set-variable  -fstack-protector-strong =
> -fno-strict-aliasing  -mno-avx512f -MT lib/util.lo -MD -MP -MF =
> $depbase.Tpo -c -o lib/util.lo lib/util.c &&\
> > mv -f $depbase.Tpo $depbase.Plo
> > #0 0x000015af6c783b06 llvm::sys::PrintStackTrace(llvm::raw_ostream&, =
> int) =
> /opt/src/git-src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:=
> 13
> > #1 0x000015af6c781543 llvm::sys::RunSignalHandlers() =
> /opt/src/git-src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:105:18
> > #2 0x000015af6c7255a2 HandleCrash =
> /opt/src/git-src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContex=
> t.cpp:73:5
> > #3 0x000015af6c7255a2 CrashRecoverySignalHandler =
> /opt/src/git-src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContex=
> t.cpp:390:51
> > #4 0x000015af6f03493c handle_signal =
> /opt/src/git-src/lib/libthr/thread/thr_sig.c:0:3
> > #5 0x000015af6f033f5b thr_sighandler =
> /opt/src/git-src/lib/libthr/thread/thr_sig.c:262:1
> > #6 0x000015af60e282d3 ([vdso]+0x2d3)
> > #7 0x000015af74a3fd8a _thr_kill =
> /export/obj/opt/src/git-src/amd64.amd64/lib/libsys/thr_kill.S:4:0
> > #8 0x000015af71a58a54 raise /opt/src/git-src/lib/libc/gen/raise.c:0:10
> > #9 0x000015af71b0a769 abort =
> /opt/src/git-src/lib/libc/stdlib/abort.c:67:17
> > #10 0x000015af71a3b591 (/lib/libc.so.7+0xa2591)
> > #11 0x000015af662b64e6 handleNoMutexHeld =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings=
> .cpp:0:5
> > #12 0x000015af65576664 hasAttrs =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/DeclBase.h:5=
> 21:34
> > #13 0x000015af65576664 attr_begin =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/DeclBase.h:5=
> 43:12
> > #14 0x000015af65576664 specific_attr_begin<clang::GuardedByAttr> =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/DeclBase.h:5=
> 68:38
> > #15 0x000015af65576664 specific_attrs<clang::GuardedByAttr> =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/DeclBase.h:5=
> 63:29
> > #16 0x000015af65576664 checkAccess =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 1775:27
> > #17 0x000015af65577976 examineArguments =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 2150:35
> > #18 0x000015af6557594b getCallee =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/Expr.h:3023:=
> 53
> > #19 0x000015af6557594b getCalleeDecl =
> /opt/src/git-src/contrib/llvm-project/clang/include/clang/AST/Expr.h:3054:=
> 12
> > #20 0x000015af6557594b VisitCallExpr =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 2223:46
> > #21 0x000015af6556837b Visit =
> /export/obj/opt/src/git-src/amd64.amd64/lib/clang/libclang/clang/AST/StmtN=
> odes.inc:1622:1
> > #22 0x000015af6556837b runAnalysis =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 2655:26
> > #23 0x000015af655645ee operator() =
> /export/obj/opt/src/git-src/amd64.amd64/tmp/usr/include/c++/v1/__vector/ve=
> ctor.h:250:18
> > #24 0x000015af655645ee ~vector =
> /export/obj/opt/src/git-src/amd64.amd64/tmp/usr/include/c++/v1/__vector/ve=
> ctor.h:262:67
> > #25 0x000015af655645ee ~ThreadSafetyAnalyzer =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 1082:7
> > #26 0x000015af655645ee =
> clang::threadSafety::runThreadSafetyAnalysis(clang::AnalysisDeclContext&, =
> clang::threadSafety::ThreadSafetyHandler&, =
> clang::threadSafety::BeforeSet**) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp:=
> 2743:1
> > #27 0x000015af662aa7d6 emitDiagnostics =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings=
> .cpp:1997:44
> > #28 0x000015af662aa7d6 =
> clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBas=
> edWarnings::Policy, clang::sema::FunctionScopeInfo*, clang::Decl const*, =
> clang::QualType) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Sema/AnalysisBasedWarnings=
> .cpp:2982:14
> > #29 0x000015af6634f5e4 =
> clang::Sema::PopFunctionScopeInfo(clang::sema::AnalysisBasedWarnings::Poli=
> cy const*, clang::Decl const*, clang::QualType) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Sema/Sema.cpp:2458:3
> > #30 0x000015af664d892f reset =
> /export/obj/opt/src/git-src/amd64.amd64/tmp/usr/include/c++/v1/__memory/un=
> ique_ptr.h:287:21
> > #31 0x000015af664d892f ~unique_ptr =
> /export/obj/opt/src/git-src/amd64.amd64/tmp/usr/include/c++/v1/__memory/un=
> ique_ptr.h:259:71
> > #32 0x000015af664d892f =
> clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp:16687:3
> > #33 0x000015af6628555c =
> clang::Parser::ParseFunctionStatementBody(clang::Decl*, =
> clang::Parser::ParseScope&) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/ParseStmt.cpp:2402:1=
> 8
> > #34 0x000015af6629f843 =
> clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, =
> clang::Parser::ParsedTemplateInfo const&, =
> clang::Parser::LateParsedAttrList*) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:0:0
> > #35 0x000015af661ca5bc =
> clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, =
> clang::DeclaratorContext, clang::ParsedAttributes&, =
> clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, =
> clang::Parser::ForRangeInit*) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/ParseDecl.cpp:2266:1=
> 8
> > #36 0x000015af6629e9bf =
> clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, =
> clang::ParsedAttributes&, clang::ParsingDeclSpec&, =
> clang::AccessSpecifier) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:0:10
> > #37 0x000015af6629e1a5 =
> clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttribute=
> s&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, =
> clang::AccessSpecifier) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:1209:12
> > #38 0x000015af6629d10a =
> clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, =
> clang::ParsedAttributes&, clang::ParsingDeclSpec*) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:0:14
> > #39 0x000015af6629b8a5 =
> clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, =
> clang::Sema::ModuleImportState&) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:745:10
> > #40 0x000015af661b4a4e clang::ParseAST(clang::Sema&, bool, bool) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Parse/ParseAST.cpp:169:5
> > #41 0x000015af6601fe48 clang::FrontendAction::Execute() =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Frontend/FrontendAction.cp=
> p:1225:10
> > #42 0x000015af65fa08cd getPtr =
> /opt/src/git-src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:27=
> 8:42
> > #43 0x000015af65fa08cd operator bool =
> /opt/src/git-src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:24=
> 1:16
> > #44 0x000015af65fa08cd =
> clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Frontend/CompilerInstance.=
> cpp:1055:23
> > #45 0x000015af660c02a5 =
> clang::ExecuteCompilerInvocation(clang::CompilerInstance*) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/FrontendTool/ExecuteCompil=
> erInvocation.cpp:299:25
> > #46 0x000015af1464f224 cc1_main =
> /opt/src/git-src/contrib/llvm-project/clang/tools/driver/cc1_main.cpp:297:=
> 15
> > #47 0x000015af1465d0a5 ExecuteCC1Tool =
> /opt/src/git-src/contrib/llvm-project/clang/tools/driver/driver.cpp:225:12=
>
> > #48 0x000015af65c6198e operator() =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:30
> > #49 0x000015af65c6198e callback_fn<(lambda at =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:22)> =
> /opt/src/git-src/contrib/llvm-project/llvm/include/llvm/ADT/STLFunctionalE=
> xtras.h:46:12
> > #50 0x000015af6c7251fc operator() =
> /opt/src/git-src/contrib/llvm-project/llvm/include/llvm/ADT/STLFunctionalE=
> xtras.h:0:12
> > #51 0x000015af6c7251fc =
> llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) =
> /opt/src/git-src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContex=
> t.cpp:426:3
> > #52 0x000015af65c60f0a =
> clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm:=
> :StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, =
> std::__1::allocator<char>>*, bool*) const =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:7
> > #53 0x000015af65c20844 =
> clang::driver::Compilation::ExecuteCommand(clang::driver::Command =
> const&, clang::driver::Command const*&, bool) const =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Compilation.cpp:196=
> :15
> > #54 0x000015af65c20acc =
> clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, =
> llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command =
> const*>>&, bool) const =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Compilation.cpp:251=
> :13
> > #55 0x000015af65c40186 empty =
> /opt/src/git-src/contrib/llvm-project/llvm/include/llvm/ADT/SmallVector.h:=
> 82:46
> > #56 0x000015af65c40186 =
> clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, =
> llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command =
> const*>>&) =
> /opt/src/git-src/contrib/llvm-project/clang/lib/Driver/Driver.cpp:2246:23
> > #57 0x000015af1465c76c clang_main =
> /opt/src/git-src/contrib/llvm-project/clang/tools/driver/driver.cpp:406:21=
>
> > #58 0x000015af1465ae22 main =
> /opt/src/git-src/usr.bin/clang/clang/clang-driver.cpp:17:10
> > #59 0x000015af71a2d3cf __libc_start1 =
> /opt/src/git-src/lib/libc/csu/libc_start1.c:180:2
> > cc: error: clang frontend command failed with exit code 134 (use -v to =
> see invocation)
> > FreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git =
> llvmorg-21.1.8-0-g2078da43e25a)
> > Target: x86_64-unknown-freebsd16.0
> > Thread model: posix
> > InstalledDir: /usr/bin
> > Build config: +assertions
> > cc: note: diagnostic msg:=20
> > ********************
> >=20
> > PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> > Preprocessed source(s) and associated run script(s) are located at:
> > cc: note: diagnostic msg: /tmp/timeval-562747.c
> > cc: note: diagnostic msg: /tmp/timeval-562747.sh
> > cc: note: diagnostic msg:=20
> >=20
> > ********************
> >=20
> > Trying this on a physical machine results in the same LLVM panic.
>
> How did you rebuild the poudriere jail? I think due to dependency issues =
> you might not have gotten a new compiler, because for me it works OK =
> now.

I install my jail using my /usr/obj and update using,

poudriere jail -j HEADamd64 -u

>
> I'll see if I can bump the FREEBSD_CC_VERSION if it's needed, but I'd =
> rather not. You should probably try a fresh build.

World should have been built incrementally but looking at bash history I 
may have only built the kernel. My mistake. Sorry for the noise.

>
> -Dimitry


-- 
Cheers,
Cy Schubert <Cy.Schubert@cschubert.com>
FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy@nwtime.org>    Web:  https://nwtime.org

			e**(i*pi)+1=0