steakhal marked an inline comment as done. steakhal added a comment. In D136162#3873392 <https://reviews.llvm.org/D136162#3873392>, @NoQ wrote:
> Ok so you're saying that it's not just a wrong Decl but there's like an > entire cast-expression missing in the AST? This fix is probably good enough > for us but it begs a question, what does CodeGen do in such cases? Does it > also need to emit a cast instruction into LLVM IR that doesn't correspond to > anything in the AST? Or is this entirely about our weird pointer cast > handling, that needs to act even when the numeric value of the pointer > doesn't change? Good question. The IR is identical for the two cases - except for metadata markers e.g. for deb info, etc. So, it might be simply that the "C" language just doesn't care if there is a bitcast or not in the AST, because the hardware register is just an untyped register; hence this `ImplicitCastExpr` (bitcast) is getting lowered as a noop at the IR level. Unfortunately, it's beyond my expertise. Do you think we should invite someone, like Shafik or Aaron? ================ Comment at: clang/lib/StaticAnalyzer/Core/CallEvent.cpp:490 + // edge-cases. + ArgVal = castArgToParamTypeIfNeeded(Call, Idx, ArgVal, SVB); + ---------------- tomasz-kaminski-sonarsource wrote: > Previously we didng make bindings if `ArgVal` was unknown, and we may want to > preserve this invariant. IDK what are the implications of not having a binding or having a binding to unknown. I'll change this anyway. Thanks for noticing. ================ Comment at: clang/test/Analysis/region-store.c:66 + // expected-warning@+1 {{passing arguments to 'b' without a prototype is deprecated in all versions of C and is not supported in C2x}} + b(&buffer); +} ---------------- NoQ wrote: > steakhal wrote: > > tomasz-kaminski-sonarsource wrote: > > > tomasz-kaminski-sonarsource wrote: > > > > I would like to see an example where the called function is implicitly > > > > defined. > > > After rethinking it, I have not idea how to construct that example. > > I could not construct such an example. > > It seems like clang errors out for cases when an implicit declaration of a > > call mismatches with the definition of that function. > > https://godbolt.org/z/rM9ajeTf7 > Yeah, if you scroll really far to the right, you'll see that the first error > is actually a warning auto-promoted to an error. So you can pass > `-Wno-implicit-function-declaration` and it'll disappear. Not sure what to do > with the other error though, it really does notice that the implicit > definition conflicts with the later explicit definition. So, dunno. Yup, I should have been more clear on this. See the test, I'm also passing the `-Wno-implicit-function-declaration` :) Maybe Shafik or Aaron knows some weird stuff about how to make it 'compile'. WDYT? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136162/new/ https://reviews.llvm.org/D136162 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits