dyung added a comment.
We also saw this assert on our Windows build, and it also can be reproduced in
Linux:
$ cat test2.c
static char *getenv(char *) {}
void foo() { getenv(""); }
$ ~/src/upstream/879f5118fc74657e4a5c4eff6810098e1eed75ac-linux/bin/clang -c
-O3 test2.c
test2.c:1:27: warning: omitting the parameter name in a function definition
is a C2x extension [-Wc2x-extensions]
static char *getenv(char *) {}
^
test2.c:1:30: warning: non-void function does not return a value
[-Wreturn-type]
static char *getenv(char *) {}
^
clang:
/home/dyung/src/upstream/llvm_clean_git/llvm/lib/Analysis/CGSCCPassManager.cpp:958:
updateCGAndAnalysisManagerForPass(llvm::LazyCallGraph&,
llvm::LazyCallGraph::SCC&, llvm::LazyCallGraph::Node&,
llvm::CGSCCAnalysisManager&, llvm::CGSCCUpdateResult&,
llvm::FunctionAnalysisManager&, bool)::<lambda(llvm::Function&)>: Assertion
`RefereeN && "Visited function should already have an associated node"' failed.
The key seems to be the special function getenv(). If I rename the function,
the crash does not occur.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128830/new/
https://reviews.llvm.org/D128830
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits