Author: Robert Widmann Date: 2020-09-28T12:36:28+02:00 New Revision: 293924973057e33fcc63521f582bb9fd41e60cc4
URL: https://github.com/llvm/llvm-project/commit/293924973057e33fcc63521f582bb9fd41e60cc4 DIFF: https://github.com/llvm/llvm-project/commit/293924973057e33fcc63521f582bb9fd41e60cc4.diff LOG: [LLVM-C] Turn a ShuffleVector Constant Into a Getter. It is not a good idea to expose raw constants in the LLVM C API. Replace this with an explicit getter. Differential Revision: https://reviews.llvm.org/D88367 (cherry picked from commit 55f727306e727ea9f013d09c9b8aa70dbce6a1bd) Added: Modified: llvm/include/llvm-c/Core.h llvm/lib/IR/Core.cpp llvm/tools/llvm-c-test/echo.cpp Removed: ################################################################################ diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h index 34d23146be40..c8a6f970419b 100644 --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -3942,13 +3942,20 @@ LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr, */ unsigned LLVMGetNumMaskElements(LLVMValueRef ShuffleVectorInst); +/** + * \returns a constant that specifies that the result of a \c ShuffleVectorInst + * is undefined. + */ +int LLVMGetUndefMaskElem(void); + /** * Get the mask value at position Elt in the mask of a ShuffleVector - * instruction. Return LLVMUndefMaskElem if the mask value is undef at that - * position. + * instruction. + * + * \Returns the result of \c LLVMGetUndefMaskElem() if the mask value is undef + * at that position. */ int LLVMGetMaskValue(LLVMValueRef ShuffleVectorInst, unsigned Elt); -extern const int LLVMUndefMaskElem; LLVMBool LLVMIsAtomicSingleThread(LLVMValueRef AtomicInst); void LLVMSetAtomicSingleThread(LLVMValueRef AtomicInst, LLVMBool SingleThread); diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 9caaea4b1f7a..c1f7329034e0 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -3963,9 +3963,8 @@ int LLVMGetMaskValue(LLVMValueRef SVInst, unsigned Elt) { ShuffleVectorInst *I = cast<ShuffleVectorInst>(P); return I->getMaskValue(Elt); } -const int LLVMUndefMaskElem = - -1; // not actually accessible as ShuffleVectorInst::UndefMaskElem, so we - // hardcode it here + +int LLVMGetUndefMaskElem(void) { return UndefMaskElem; } LLVMBool LLVMIsAtomicSingleThread(LLVMValueRef AtomicInst) { Value *P = unwrap<Value>(AtomicInst); diff --git a/llvm/tools/llvm-c-test/echo.cpp b/llvm/tools/llvm-c-test/echo.cpp index b404048749d3..0b3a10f463dd 100644 --- a/llvm/tools/llvm-c-test/echo.cpp +++ b/llvm/tools/llvm-c-test/echo.cpp @@ -809,7 +809,7 @@ struct FunCloner { unsigned NumMaskElts = LLVMGetNumMaskElements(Src); for (unsigned i = 0; i < NumMaskElts; i++) { int Val = LLVMGetMaskValue(Src, i); - if (Val == LLVMUndefMaskElem) { + if (Val == LLVMGetUndefMaskElem()) { MaskElts.push_back(LLVMGetUndef(LLVMInt64Type())); } else { MaskElts.push_back(LLVMConstInt(LLVMInt64Type(), Val, true)); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits