rogfer01 added inline comments.

================
Comment at: clang/lib/CodeGen/Targets/RISCV.cpp:178
       return false;
-    if (isEmptyRecord(getContext(), Ty, true))
+    if (isEmptyRecord(getContext(), Ty, true, true))
       return true;
----------------
I've observed (based on manually added tracing) that we may return true here 
with `Field1Ty == nullptr` and `Field2Ty == nullptr`.

Then `RISCVABIInfo::coerceAndExpandFPCCEligibleStruct` receives these two types 
and appends `Field1Ty` it into `UnpaddedCoerceElts` and then if `Field2Ty == 
nullptr` it calls `ABIArgInfo::getCoerceAndExpand` (around line 280 of 
`clang/lib/CodeGen/Targets/RISCV.cpp`) which then tries to do a `dyn_cast` on a 
null value and then an assertion fires (around line 256 of 
`clang/include/clang/CodeGen/CGFunctionInfo.h`)

I can reproduce this with the llvm-testsuite. Apologies that I have not managed 
to create a small reproducer yet.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142327/new/

https://reviews.llvm.org/D142327

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to