[llvm] 4121191 - [SandboxIR] Added isVolatile args to existing LoadInst::create function (#100850)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 28 13:37:36 PDT 2024
Author: Julius Alexandre
Date: 2024-07-28T13:37:33-07:00
New Revision: 41211919db5feb279d2954eb590a3cf2a1742152
URL: https://github.com/llvm/llvm-project/commit/41211919db5feb279d2954eb590a3cf2a1742152
DIFF: https://github.com/llvm/llvm-project/commit/41211919db5feb279d2954eb590a3cf2a1742152.diff
LOG: [SandboxIR] Added isVolatile args to existing LoadInst::create function (#100850)
Added isVolatile args along with the tests.
Added:
Modified:
llvm/include/llvm/SandboxIR/SandboxIR.h
llvm/lib/SandboxIR/SandboxIR.cpp
llvm/unittests/SandboxIR/SandboxIRTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/SandboxIR/SandboxIR.h b/llvm/include/llvm/SandboxIR/SandboxIR.h
index 1397d9da70643..667aeba1bda1f 100644
--- a/llvm/include/llvm/SandboxIR/SandboxIR.h
+++ b/llvm/include/llvm/SandboxIR/SandboxIR.h
@@ -65,8 +65,8 @@
#define LLVM_SANDBOXIR_SANDBOXIR_H
#include "llvm/IR/Function.h"
-#include "llvm/IR/Instruction.h"
#include "llvm/IR/IRBuilder.h"
+#include "llvm/IR/Instruction.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/SandboxIR/Tracker.h"
@@ -772,10 +772,10 @@ class LoadInst final : public Instruction {
unsigned getNumOfIRInstrs() const final { return 1u; }
static LoadInst *create(Type *Ty, Value *Ptr, MaybeAlign Align,
Instruction *InsertBefore, Context &Ctx,
- const Twine &Name = "");
+ bool IsVolatile = false, const Twine &Name = "");
static LoadInst *create(Type *Ty, Value *Ptr, MaybeAlign Align,
BasicBlock *InsertAtEnd, Context &Ctx,
- const Twine &Name = "");
+ bool IsVolatile = false, const Twine &Name = "");
/// For isa/dyn_cast.
static bool classof(const Value *From);
Value *getPointerOperand() const;
diff --git a/llvm/lib/SandboxIR/SandboxIR.cpp b/llvm/lib/SandboxIR/SandboxIR.cpp
index 2dc9f5864dc5c..d2b4fb207ba3a 100644
--- a/llvm/lib/SandboxIR/SandboxIR.cpp
+++ b/llvm/lib/SandboxIR/SandboxIR.cpp
@@ -612,23 +612,23 @@ void BranchInst::dump() const {
LoadInst *LoadInst::create(Type *Ty, Value *Ptr, MaybeAlign Align,
Instruction *InsertBefore, Context &Ctx,
- const Twine &Name) {
+ bool IsVolatile, const Twine &Name) {
llvm::Instruction *BeforeIR = InsertBefore->getTopmostLLVMInstruction();
auto &Builder = Ctx.getLLVMIRBuilder();
Builder.SetInsertPoint(BeforeIR);
- auto *NewLI = Builder.CreateAlignedLoad(Ty, Ptr->Val, Align,
- /*isVolatile=*/false, Name);
+ auto *NewLI =
+ Builder.CreateAlignedLoad(Ty, Ptr->Val, Align, IsVolatile, Name);
auto *NewSBI = Ctx.createLoadInst(NewLI);
return NewSBI;
}
LoadInst *LoadInst::create(Type *Ty, Value *Ptr, MaybeAlign Align,
BasicBlock *InsertAtEnd, Context &Ctx,
- const Twine &Name) {
+ bool IsVolatile, const Twine &Name) {
auto &Builder = Ctx.getLLVMIRBuilder();
Builder.SetInsertPoint(cast<llvm::BasicBlock>(InsertAtEnd->Val));
- auto *NewLI = Builder.CreateAlignedLoad(Ty, Ptr->Val, Align,
- /*isVolatile=*/false, Name);
+ auto *NewLI =
+ Builder.CreateAlignedLoad(Ty, Ptr->Val, Align, IsVolatile, Name);
auto *NewSBI = Ctx.createLoadInst(NewLI);
return NewSBI;
}
diff --git a/llvm/unittests/SandboxIR/SandboxIRTest.cpp b/llvm/unittests/SandboxIR/SandboxIRTest.cpp
index 7edfe457c32a9..122508d15194f 100644
--- a/llvm/unittests/SandboxIR/SandboxIRTest.cpp
+++ b/llvm/unittests/SandboxIR/SandboxIRTest.cpp
@@ -764,11 +764,23 @@ define void @foo(ptr %arg0, ptr %arg1) {
// Check create(InsertBefore)
sandboxir::LoadInst *NewLd =
sandboxir::LoadInst::create(Ld->getType(), Arg1, Align(8),
- /*InsertBefore=*/Ret, Ctx, "NewLd");
+ /*InsertBefore=*/Ret, Ctx,
+ /*IsVolatile=*/false, "NewLd");
+ // Checking if create() was volatile
+ EXPECT_FALSE(NewLd->isVolatile());
EXPECT_EQ(NewLd->getType(), Ld->getType());
EXPECT_EQ(NewLd->getPointerOperand(), Arg1);
EXPECT_EQ(NewLd->getAlign(), 8);
EXPECT_EQ(NewLd->getName(), "NewLd");
+
+ sandboxir::LoadInst *NewVLd =
+ sandboxir::LoadInst::create(Vld->getType(), Arg1, Align(8),
+ /*InsertBefore=*/Ret, Ctx,
+ /*IsVolatile=*/true, "NewVLd");
+
+ // Checking if create() was volatile
+ EXPECT_TRUE(NewVLd->isVolatile());
+ EXPECT_EQ(NewVLd->getName(), "NewVLd");
}
TEST_F(SandboxIRTest, StoreInst) {
More information about the llvm-commits
mailing list