================
@@ -145,6 +145,16 @@ bool SemaPPC::CheckPPCBuiltinFunctionCall(const TargetInfo 
&TI,
   //  - IsIntType: enforces any integer type
   // Lambdas centralize type checks for BCD builtin handlers
 
+  // reject calls with more args than the builtin's declared prototype
----------------
AaronBallman wrote:

>>    https://godbolt.org/z/K5Pz83nsW why is this an error about an undeclared 
>> identifier vector?
> this one seems like unrelated to the issue (sorry if i am missing anything 
> here)

Unrelated to this PR, mostly caught me by surprise. I would have expected that 
to say that `vector` cannot be used with the type instead of `vector` being an 
unknown identifier entirely. But it was in service of "are we actually doing 
the custom type checking at all?"

> soo this is breaking the CI.. okay what if we Restore "t" in BuiltinsPPC.def 
> for the 7 BCD builtins and add a CheckArgCountAtMost guard inside SemaPPC.cpp 
> that reads param count from GetBuiltinType. then add the missing type checks 
> for national2packed/packed2zoned/zoned2packed (Arg0 must be vector unsigned 
> char) and Keep the existing immediate-range checks 
> (BuiltinConstantArgRange).. should this approach be good ?

I'd like to better understand what's failing. I spot checked a failure and it 
looks like we're breaking assumptions in CodeGen:
```
...
   # | #14 0x0000000008621827 dyn_cast<llvm::VectorType, llvm::Type> 
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Casting.h:656:3
  # | #15 0x0000000008621827 (anonymous 
namespace)::FoldBitCast(llvm::Constant*, llvm::Type*, llvm::DataLayout const&) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Analysis/ConstantFolding.cpp:0:0
  # | #16 0x0000000006824bf6 
llvm::IRBuilderBase::CreateCast(llvm::Instruction::CastOps, llvm::Value*, 
llvm::Type*, llvm::Twine const&, llvm::MDNode*, llvm::FMFSource) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/IR/IRBuilder.h:2297:16
  # | #17 0x0000000009f27338 
clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::GlobalDecl, unsigned 
int, clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGBuiltin.cpp:0:0
  # | #18 0x0000000009d05ada 
clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, 
clang::CodeGen::ReturnValueSlot, llvm::CallBase**) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExpr.cpp:6531:5
  # | #19 0x0000000009d2748e isScalar 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGValue.h:64:41
  # | #20 0x0000000009d2748e getScalarVal 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGValue.h:73:12
  # | #21 0x0000000009d2748e (anonymous 
namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:687:36
  # | #22 0x0000000009d2fa6f Visit 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:496:52
  # | #23 0x0000000009d2fa6f (anonymous 
namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:2663:18
  # | #24 0x0000000009d12d4d Visit 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:496:52
  # | #25 0x0000000009d12d4d 
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:6244:8
  # | #26 0x0000000009c6c5b3 
clang::CodeGen::CodeGenFunction::EmitReturnStmt(clang::ReturnStmt const&) 
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/CodeGen/CGStmt.cpp:1698:26
...
```
but what assumptions are being violated and why? 

https://github.com/llvm/llvm-project/pull/222841
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to