From eabe3ad57d824c2b07016352fd97ce85777b6f9d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 22 Mar 2012 03:54:15 +0000 Subject: [PATCH] add load/store volatility control to the C API, patch by Yiannis Tsiouris! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153238 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/Core.h | 2 ++ lib/VMCore/Core.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 52b8b1c046b..77746069a25 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -2398,6 +2398,8 @@ LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, const char *Name); LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, const char *Name); +LLVMBool LLVMGetVolatile(LLVMValueRef MemoryAccessInst); +void LLVMSetVolatile(LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile); /* Casts */ LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef Val, diff --git a/lib/VMCore/Core.cpp b/lib/VMCore/Core.cpp index e86d805e329..a9cca22d0dd 100644 --- a/lib/VMCore/Core.cpp +++ b/lib/VMCore/Core.cpp @@ -2066,6 +2066,20 @@ LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, return wrap(unwrap(B)->CreateGlobalStringPtr(Str, Name)); } +LLVMBool LLVMGetVolatile(LLVMValueRef MemAccessInst) { + Value *P = unwrap(MemAccessInst); + if (LoadInst *LI = dyn_cast(P)) + return LI->isVolatile(); + return cast(P)->isVolatile(); +} + +void LLVMSetVolatile(LLVMValueRef MemAccessInst, LLVMBool isVolatile) { + Value *P = unwrap(MemAccessInst); + if (LoadInst *LI = dyn_cast(P)) + return LI->setVolatile(isVolatile); + return cast(P)->setVolatile(isVolatile); +} + /*--.. Casts ...............................................................--*/ LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef B, LLVMValueRef Val, -- 2.34.1