craig.topper added a comment.

Any intrinsic that takes an immediate that needs to be in certain range, needs 
to have code added to SemaChecking.cpp to validate the range. Look for the 
other places we call SemaBuiltinConstantArgRange in 
Sema::CheckRISCVBuiltinFunctionCall



================
Comment at: clang/include/clang/Basic/BuiltinsRISCV.def:76
+TARGET_BUILTIN(__builtin_riscv_brev8, "ZiZi", "nc", "zbkb")
+TARGET_BUILTIN(__builtin_riscv_zip, "ZiZi", "nc", "zbkb")
+TARGET_BUILTIN(__builtin_riscv_unzip, "ZiZi", "nc", "zbkb")
----------------
Nothing is preventing __builtin_riscv_zip/unzip from being used on RV64 which 
will crash. We don't have a "32bit" feature flag so we can't fix it from here. 
You'll need to go into clang/lib/Sema/SemaChecking.cpp and implement something 
like where X86 emits err_32_bit_builtin_64_bit_tgt. Same is true for any other 
32-bit only intrinsic.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112774

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

Reply via email to