gollvm: fix release build issue
This fixes a crash when compiling with -enable-gc=1 for release-built
compilers (use of ArrayRef not quite right, scope of things being
referenced is not long enough).
Change-Id: Ida860ebb10eb12ff8c7488ba4cbea820a18a7c47
Reviewed-on: https://go-review.googlesource.com/c/158177
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/passes/Util.cpp b/passes/Util.cpp
index 8076669..560e838 100644
--- a/passes/Util.cpp
+++ b/passes/Util.cpp
@@ -58,7 +58,9 @@
case Type::ArrayTyID: {
Type *ET = T->getArrayElementType();
for (unsigned i = 0, n = T->getArrayNumElements(); i < n; ++i) {
- ArrayRef<Value*> Idx = { ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, i) };
+ Value *ivals[2] = { ConstantInt::get(Int32Ty, 0),
+ ConstantInt::get(Int32Ty, i) };
+ ArrayRef<Value*> Idx = makeArrayRef(ivals, 2);
uint64_t Offset = DL.getIndexedOffsetInType(T, Idx);
getPtrBitmapForTypeHelper(ET, DL, BaseOffset+Offset, BV);
}
@@ -67,7 +69,9 @@
case Type::VectorTyID: {
Type *ET = T->getVectorElementType();
for (unsigned i = 0, n = T->getVectorNumElements(); i < n; ++i) {
- ArrayRef<Value*> Idx = { ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, i) };
+ Value *ivals[2] = { ConstantInt::get(Int32Ty, 0),
+ ConstantInt::get(Int32Ty, i) };
+ ArrayRef<Value*> Idx = makeArrayRef(ivals, 2);
uint64_t Offset = DL.getIndexedOffsetInType(T, Idx);
getPtrBitmapForTypeHelper(ET, DL, BaseOffset+Offset, BV);
}
@@ -78,7 +82,9 @@
Type *ET = T->getStructElementType(i);
if (!hasPointer(ET))
continue;
- ArrayRef<Value*> Idx = { ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, i) };
+ Value *ivals[2] = { ConstantInt::get(Int32Ty, 0),
+ ConstantInt::get(Int32Ty, i) };
+ ArrayRef<Value*> Idx = makeArrayRef(ivals, 2);
uint64_t Offset = DL.getIndexedOffsetInType(T, Idx);
getPtrBitmapForTypeHelper(ET, DL, BaseOffset+Offset, BV);
}