summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/glsl/ir_to_llvm.cpp8
-rw-r--r--src/pixelflinger2/llvm_helper.h8
2 files changed, 11 insertions, 5 deletions
diff --git a/src/glsl/ir_to_llvm.cpp b/src/glsl/ir_to_llvm.cpp
index d0ebedf..3211d9f 100644
--- a/src/glsl/ir_to_llvm.cpp
+++ b/src/glsl/ir_to_llvm.cpp
@@ -1158,10 +1158,12 @@ public:
}
llvm::Constant* vec;
- if(ir->type->vector_elements > 1)
- vec = llvm::ConstantVector::get((llvm::VectorType*)vec_type, elems);
- else
+ if(ir->type->vector_elements > 1) {
+ llvm::ArrayRef<llvm::Constant*> ConstantArray(elems);
+ vec = llvm::ConstantVector::get(ConstantArray);
+ } else {
vec = elems[0];
+ }
vecs.push_back(vec);
}
diff --git a/src/pixelflinger2/llvm_helper.h b/src/pixelflinger2/llvm_helper.h
index 5a7ca1d..c9f8111 100644
--- a/src/pixelflinger2/llvm_helper.h
+++ b/src/pixelflinger2/llvm_helper.h
@@ -63,7 +63,9 @@ static Value * constIntVec(IRBuilder<> & builder, int x, int y, int z, int w)
vec[1] = builder.getInt32(y);
vec[2] = builder.getInt32(z);
vec[3] = builder.getInt32(w);
- return ConstantVector::get(intVecType(builder), vec);
+
+ llvm::ArrayRef<llvm::Constant*> ConstantArray(vec);
+ return ConstantVector::get(ConstantArray);
}
static Value * intVec(IRBuilder<> & builder, Value * x, Value * y, Value * z, Value * w)
@@ -84,7 +86,9 @@ static Value * constFloatVec(IRBuilder<> & builder, float x, float y, float z, f
vec[1] = constFloat(builder, y);
vec[2] = constFloat(builder, z);
vec[3] = constFloat(builder, w);
- return ConstantVector::get(floatVecType(builder), vec);
+
+ llvm::ArrayRef<llvm::Constant*> ConstantArray(vec);
+ return ConstantVector::get(ConstantArray);
}
static std::vector<Value *> extractVector(IRBuilder<> & builder, Value *vec)