Skip to content

Commit e40b49b

Browse files
committed
Temporarily unconditionally emit used / compiler.used array elements as unqualified pointers
Workaround an ASAN issue; exposed by llvm#88182 Change-Id: Ic41f7b0271ae52d70dafc0839146a24b0fa700fb
1 parent 522a805 commit e40b49b

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2944,14 +2944,15 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,
29442944
SmallVector<llvm::Constant*, 8> UsedArray;
29452945
UsedArray.resize(List.size());
29462946
for (unsigned i = 0, e = List.size(); i != e; ++i) {
2947-
UsedArray[i] =
2948-
llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
2949-
cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);
2947+
UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
2948+
cast<llvm::Constant>(&*List[i]),
2949+
llvm::PointerType::getUnqual(CGM.getLLVMContext()));
29502950
}
29512951

29522952
if (UsedArray.empty())
29532953
return;
2954-
llvm::ArrayType *ATy = llvm::ArrayType::get(CGM.Int8PtrTy, UsedArray.size());
2954+
llvm::ArrayType *ATy = llvm::ArrayType::get(
2955+
llvm::PointerType::getUnqual(CGM.getLLVMContext()), UsedArray.size());
29552956

29562957
auto *GV = new llvm::GlobalVariable(
29572958
CGM.getModule(), ATy, false, llvm::GlobalValue::AppendingLinkage,

0 commit comments

Comments
 (0)