summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen/IRBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/CodeGen/IRBuilder.cpp')
-rw-r--r--polly/lib/CodeGen/IRBuilder.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/polly/lib/CodeGen/IRBuilder.cpp b/polly/lib/CodeGen/IRBuilder.cpp
index b7e03decf3f..248f0cfb43c 100644
--- a/polly/lib/CodeGen/IRBuilder.cpp
+++ b/polly/lib/CodeGen/IRBuilder.cpp
@@ -34,7 +34,10 @@ static MDNode *getID(LLVMContext &Ctx, Value *arg0 = nullptr,
Value *arg1 = nullptr) {
MDNode *ID;
SmallVector<Value *, 3> Args;
- Args.push_back(nullptr);
+ // Use a temporary node to safely create a unique pointer for the first arg.
+ MDNode *TempNode = MDNode::getTemporary(Ctx, None);
+ // Reserve operand 0 for loop id self reference.
+ Args.push_back(TempNode);
if (arg0)
Args.push_back(arg0);
@@ -43,6 +46,7 @@ static MDNode *getID(LLVMContext &Ctx, Value *arg0 = nullptr,
ID = MDNode::get(Ctx, Args);
ID->replaceOperandWith(0, ID);
+ MDNode::deleteTemporary(TempNode);
return ID;
}
OpenPOWER on IntegriCloud