Skip to content

Commit a7c0c81

Browse files
author
iclsrc
committed
Merge from 'master' to 'sycl-web' (#1)
2 parents a1d0cc7 + 2cfbdaf commit a7c0c81

File tree

68 files changed

+873
-545
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+873
-545
lines changed

clang/lib/CodeGen/CGClass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2803,7 +2803,7 @@ void CodeGenFunction::EmitVTablePtrCheck(const CXXRecordDecl *RD,
28032803
}
28042804

28052805
if (CGM.getCodeGenOpts().SanitizeTrap.has(M)) {
2806-
EmitTrapCheck(TypeTest);
2806+
EmitTrapCheck(TypeTest, SanitizerHandler::CFICheckFail);
28072807
return;
28082808
}
28092809

clang/lib/CodeGen/CGExpr.cpp

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3222,7 +3222,7 @@ void CodeGenFunction::EmitCheck(
32223222
}
32233223

32243224
if (TrapCond)
3225-
EmitTrapCheck(TrapCond);
3225+
EmitTrapCheck(TrapCond, CheckHandler);
32263226
if (!FatalCond && !RecoverableCond)
32273227
return;
32283228

@@ -3417,7 +3417,7 @@ void CodeGenFunction::EmitCfiCheckFail() {
34173417
// Data == nullptr means the calling module has trap behaviour for this check.
34183418
llvm::Value *DataIsNotNullPtr =
34193419
Builder.CreateICmpNE(Data, llvm::ConstantPointerNull::get(Int8PtrTy));
3420-
EmitTrapCheck(DataIsNotNullPtr);
3420+
EmitTrapCheck(DataIsNotNullPtr, SanitizerHandler::CFICheckFail);
34213421

34223422
llvm::StructType *SourceLocationTy =
34233423
llvm::StructType::get(VoidPtrTy, Int32Ty, Int32Ty);
@@ -3456,7 +3456,7 @@ void CodeGenFunction::EmitCfiCheckFail() {
34563456
EmitCheck(std::make_pair(Cond, Mask), SanitizerHandler::CFICheckFail, {},
34573457
{Data, Addr, ValidVtable});
34583458
else
3459-
EmitTrapCheck(Cond);
3459+
EmitTrapCheck(Cond, SanitizerHandler::CFICheckFail);
34603460
}
34613461

34623462
FinishFunction();
@@ -3476,28 +3476,48 @@ void CodeGenFunction::EmitUnreachable(SourceLocation Loc) {
34763476
Builder.CreateUnreachable();
34773477
}
34783478

3479-
void CodeGenFunction::EmitTrapCheck(llvm::Value *Checked) {
3479+
void CodeGenFunction::EmitTrapCheck(llvm::Value *Checked,
3480+
SanitizerHandler CheckHandlerID) {
34803481
llvm::BasicBlock *Cont = createBasicBlock("cont");
34813482

34823483
// If we're optimizing, collapse all calls to trap down to just one per
3483-
// function to save on code size.
3484+
// check-type per function to save on code size.
3485+
if (TrapBBs.size() <= CheckHandlerID)
3486+
TrapBBs.resize(CheckHandlerID + 1);
3487+
llvm::BasicBlock *&TrapBB = TrapBBs[CheckHandlerID];
3488+
34843489
if (!CGM.getCodeGenOpts().OptimizationLevel || !TrapBB) {
34853490
TrapBB = createBasicBlock("trap");
34863491
Builder.CreateCondBr(Checked, Cont, TrapBB);
34873492
EmitBlock(TrapBB);
3488-
llvm::CallInst *TrapCall = EmitTrapCall(llvm::Intrinsic::trap);
3493+
3494+
llvm::CallInst *TrapCall =
3495+
Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::ubsantrap),
3496+
llvm::ConstantInt::get(CGM.Int8Ty, CheckHandlerID));
3497+
3498+
if (!CGM.getCodeGenOpts().TrapFuncName.empty()) {
3499+
auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name",
3500+
CGM.getCodeGenOpts().TrapFuncName);
3501+
TrapCall->addAttribute(llvm::AttributeList::FunctionIndex, A);
3502+
}
34893503
TrapCall->setDoesNotReturn();
34903504
TrapCall->setDoesNotThrow();
34913505
Builder.CreateUnreachable();
34923506
} else {
3507+
auto Call = TrapBB->begin();
3508+
assert(isa<llvm::CallInst>(Call) && "Expected call in trap BB");
3509+
3510+
Call->applyMergedLocation(Call->getDebugLoc(),
3511+
Builder.getCurrentDebugLocation());
34933512
Builder.CreateCondBr(Checked, Cont, TrapBB);
34943513
}
34953514

34963515
EmitBlock(Cont);
34973516
}
34983517

34993518
llvm::CallInst *CodeGenFunction::EmitTrapCall(llvm::Intrinsic::ID IntrID) {
3500-
llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID));
3519+
llvm::CallInst *TrapCall =
3520+
Builder.CreateCall(CGM.getIntrinsic(IntrID));
35013521

35023522
if (!CGM.getCodeGenOpts().TrapFuncName.empty()) {
35033523
auto A = llvm::Attribute::get(getLLVMContext(), "trap-func-name",

clang/lib/CodeGen/CGExprScalar.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3230,6 +3230,7 @@ Value *ScalarExprEmitter::EmitRem(const BinOpInfo &Ops) {
32303230
Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(const BinOpInfo &Ops) {
32313231
unsigned IID;
32323232
unsigned OpID = 0;
3233+
SanitizerHandler OverflowKind;
32333234

32343235
bool isSigned = Ops.Ty->isSignedIntegerOrEnumerationType();
32353236
switch (Ops.Opcode) {
@@ -3238,18 +3239,21 @@ Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(const BinOpInfo &Ops) {
32383239
OpID = 1;
32393240
IID = isSigned ? llvm::Intrinsic::sadd_with_overflow :
32403241
llvm::Intrinsic::uadd_with_overflow;
3242+
OverflowKind = SanitizerHandler::AddOverflow;
32413243
break;
32423244
case BO_Sub:
32433245
case BO_SubAssign:
32443246
OpID = 2;
32453247
IID = isSigned ? llvm::Intrinsic::ssub_with_overflow :
32463248
llvm::Intrinsic::usub_with_overflow;
3249+
OverflowKind = SanitizerHandler::SubOverflow;
32473250
break;
32483251
case BO_Mul:
32493252
case BO_MulAssign:
32503253
OpID = 3;
32513254
IID = isSigned ? llvm::Intrinsic::smul_with_overflow :
32523255
llvm::Intrinsic::umul_with_overflow;
3256+
OverflowKind = SanitizerHandler::MulOverflow;
32533257
break;
32543258
default:
32553259
llvm_unreachable("Unsupported operation for overflow detection");
@@ -3279,7 +3283,7 @@ Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(const BinOpInfo &Ops) {
32793283
: SanitizerKind::UnsignedIntegerOverflow;
32803284
EmitBinOpCheck(std::make_pair(NotOverflow, Kind), Ops);
32813285
} else
3282-
CGF.EmitTrapCheck(Builder.CreateNot(overflow));
3286+
CGF.EmitTrapCheck(Builder.CreateNot(overflow), OverflowKind);
32833287
return result;
32843288
}
32853289

clang/lib/CodeGen/CodeGenFunction.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,7 +1856,7 @@ class CodeGenFunction : public CodeGenTypeCache {
18561856

18571857
llvm::BasicBlock *TerminateLandingPad = nullptr;
18581858
llvm::BasicBlock *TerminateHandler = nullptr;
1859-
llvm::BasicBlock *TrapBB = nullptr;
1859+
llvm::SmallVector<llvm::BasicBlock *, 2> TrapBBs;
18601860

18611861
/// Terminate funclets keyed by parent funclet pad.
18621862
llvm::MapVector<llvm::Value *, llvm::BasicBlock *> TerminateFunclets;
@@ -4476,7 +4476,7 @@ class CodeGenFunction : public CodeGenTypeCache {
44764476

44774477
/// Create a basic block that will call the trap intrinsic, and emit a
44784478
/// conditional branch to it, for the -ftrapv checks.
4479-
void EmitTrapCheck(llvm::Value *Checked);
4479+
void EmitTrapCheck(llvm::Value *Checked, SanitizerHandler CheckHandlerID);
44804480

44814481
/// Emit a call to trap or debugtrap and attach function attribute
44824482
/// "trap-func-name" if specified.

clang/lib/CodeGen/ItaniumCXXABI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ CGCallee ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(
771771
};
772772

773773
if (CGM.getCodeGenOpts().SanitizeTrap.has(SanitizerKind::CFIMFCall)) {
774-
CGF.EmitTrapCheck(CheckResult);
774+
CGF.EmitTrapCheck(CheckResult, SanitizerHandler::CFICheckFail);
775775
} else {
776776
llvm::Value *AllVtables = llvm::MetadataAsValue::get(
777777
CGM.getLLVMContext(),

clang/lib/CodeGen/TargetInfo.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10425,7 +10425,6 @@ bool RISCVABIInfo::detectFPCCEligibleStructHelper(QualType Ty, CharUnits CurOff,
1042510425
return false;
1042610426
Field1Ty = CGT.ConvertType(EltTy);
1042710427
Field1Off = CurOff;
10428-
assert(CurOff.isZero() && "Unexpected offset for first field");
1042910428
Field2Ty = Field1Ty;
1043010429
Field2Off = Field1Off + getContext().getTypeSizeInChars(EltTy);
1043110430
return true;
@@ -10520,7 +10519,7 @@ bool RISCVABIInfo::detectFPCCEligibleStruct(QualType Ty, llvm::Type *&Field1Ty,
1052010519
NeededArgFPRs++;
1052110520
else if (Field2Ty)
1052210521
NeededArgGPRs++;
10523-
return IsCandidate;
10522+
return true;
1052410523
}
1052510524

1052610525
// Call getCoerceAndExpand for the two-element flattened struct described by
@@ -10546,15 +10545,15 @@ ABIArgInfo RISCVABIInfo::coerceAndExpandFPCCEligibleStruct(
1054610545

1054710546
CharUnits Field2Align =
1054810547
CharUnits::fromQuantity(getDataLayout().getABITypeAlignment(Field2Ty));
10549-
CharUnits Field1Size =
10548+
CharUnits Field1End = Field1Off +
1055010549
CharUnits::fromQuantity(getDataLayout().getTypeStoreSize(Field1Ty));
10551-
CharUnits Field2OffNoPadNoPack = Field1Size.alignTo(Field2Align);
10550+
CharUnits Field2OffNoPadNoPack = Field1End.alignTo(Field2Align);
1055210551

1055310552
CharUnits Padding = CharUnits::Zero();
1055410553
if (Field2Off > Field2OffNoPadNoPack)
1055510554
Padding = Field2Off - Field2OffNoPadNoPack;
10556-
else if (Field2Off != Field2Align && Field2Off > Field1Size)
10557-
Padding = Field2Off - Field1Size;
10555+
else if (Field2Off != Field2Align && Field2Off > Field1End)
10556+
Padding = Field2Off - Field1End;
1055810557

1055910558
bool IsPacked = !Field2Off.isMultipleOf(Field2Align);
1056010559

clang/test/CodeGen/bounds-checking.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
// CHECK-LABEL: @f
99
double f(int b, int i) {
1010
double a[b];
11-
// CHECK: call {{.*}} @llvm.trap
11+
// CHECK: call {{.*}} @llvm.{{(ubsan)?trap}}
1212
return a[i];
1313
}
1414

1515
// CHECK-LABEL: @f2
1616
void f2() {
1717
// everything is constant; no trap possible
18-
// CHECK-NOT: call {{.*}} @llvm.trap
18+
// CHECK-NOT: call {{.*}} @llvm.{{(ubsan)?trap}}
1919
int a[2];
2020
a[1] = 42;
2121

@@ -28,7 +28,7 @@ void f2() {
2828
// CHECK-LABEL: @f3
2929
void f3() {
3030
int a[1];
31-
// CHECK: call {{.*}} @llvm.trap
31+
// CHECK: call {{.*}} @llvm.{{(ubsan)?trap}}
3232
a[2] = 1;
3333
}
3434

@@ -37,15 +37,15 @@ union U { int a[0]; int b[1]; int c[2]; };
3737
// CHECK-LABEL: define {{.*}} @f4
3838
int f4(union U *u, int i) {
3939
// a and b are treated as flexible array members.
40-
// CHECK-NOT: @llvm.trap
40+
// CHECK-NOT: @llvm.ubsantrap
4141
return u->a[i] + u->b[i];
4242
// CHECK: }
4343
}
4444

4545
// CHECK-LABEL: define {{.*}} @f5
4646
int f5(union U *u, int i) {
4747
// c is not a flexible array member.
48-
// NONLOCAL: call {{.*}} @llvm.trap
48+
// NONLOCAL: call {{.*}} @llvm.ubsantrap
4949
return u->c[i];
5050
// CHECK: }
5151
}

clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-lvalue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ char **load_from_ac_struct(struct ac_struct *x) {
2929
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
3030
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 0){{.*}}, !nosanitize
3131
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 0){{.*}}, !nosanitize
32-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
32+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
3333
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
3434
// CHECK-SANITIZE: [[CONT]]:
3535
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[A]], i64 2147483648) ]

clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-paramvar.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ char **passthrough(__attribute__((align_value(0x80000000))) char **x) {
2121
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
2222
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 0){{.*}}, !nosanitize
2323
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 0){{.*}}, !nosanitize
24-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
24+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
2525
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
2626
// CHECK-SANITIZE: [[CONT]]:
2727
// CHECK-SANITIZE-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[X_RELOADED]], i64 2147483648) ]

clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function-variable.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ char **caller(char **x, unsigned long alignment) {
3939
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
4040
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 %[[ALIGNMENT_RELOADED]], i64 0){{.*}}, !nosanitize
4141
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 %[[ALIGNMENT_RELOADED]], i64 0){{.*}}, !nosanitize
42-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
42+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
4343
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
4444
// CHECK-SANITIZE: [[CONT]]:
4545
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[X_RETURNED]], i64 %1) ]

clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ char **caller(char **x) {
3636
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
3737
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 128, i64 0){{.*}}, !nosanitize
3838
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 128, i64 0){{.*}}, !nosanitize
39-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
39+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
4040
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
4141
// CHECK-SANITIZE: [[CONT]]:
4242
// CHECK-SANITIZE-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[X_RETURNED]], i64 128) ]

clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function-two-params.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ char **caller(char **x) {
3333
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
3434
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 42){{.*}}, !nosanitize
3535
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 2147483648, i64 42){{.*}}, !nosanitize
36-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
36+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
3737
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
3838
// CHECK-SANITIZE: [[CONT]]:
3939
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[X_RETURNED]], i64 2147483648, i64 42) ]

clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ char **caller(char **x) {
3333
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
3434
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 128, i64 0){{.*}}, !nosanitize
3535
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 128, i64 0){{.*}}, !nosanitize
36-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
36+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
3737
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
3838
// CHECK-SANITIZE: [[CONT]]:
3939
// CHECK-SANITIZE-NEXT: call void @llvm.assume(i1 true) [ "align"(i8** %[[X_RETURNED]], i64 128) ]

clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params-variable.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ void *caller(char **x, unsigned long offset) {
2525
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
2626
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 %[[OFFSET_RELOADED]]){{.*}}, !nosanitize
2727
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 %[[OFFSET_RELOADED]]){{.*}}, !nosanitize
28-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
28+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
2929
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
3030
// CHECK-SANITIZE: [[CONT]]:
3131
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8* %[[BITCAST]], i64 536870912, i64 %[[OFFSET_RELOADED]]) ]

clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void *caller(char **x) {
2222
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
2323
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 42){{.*}}, !nosanitize
2424
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 42){{.*}}, !nosanitize
25-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
25+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
2626
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
2727
// CHECK-SANITIZE: [[CONT]]:
2828
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8* %[[BITCAST]], i64 536870912, i64 42) ]

clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-two-params.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void *caller(char **x) {
2121
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
2222
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 0){{.*}}, !nosanitize
2323
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 536870912, i64 0){{.*}}, !nosanitize
24-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
24+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
2525
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
2626
// CHECK-SANITIZE: [[CONT]]:
2727
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8* %[[BITCAST]], i64 536870912) ]

clang/test/CodeGen/catch-alignment-assumption-openmp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ void func(char *data) {
2020
// CHECK-SANITIZE: [[HANDLER_ALIGNMENT_ASSUMPTION]]:
2121
// CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_alignment_assumption_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 1073741824, i64 0){{.*}}, !nosanitize
2222
// CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_alignment_assumption(i8* bitcast ({ {{{.*}}}, {{{.*}}}, {{{.*}}}* }* @[[LINE_100_ALIGNMENT_ASSUMPTION]] to i8*), i64 %[[PTRINT_DUP]], i64 1073741824, i64 0){{.*}}, !nosanitize
23-
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
23+
// CHECK-SANITIZE-TRAP-NEXT: call void @llvm.ubsantrap(i8 23){{.*}}, !nosanitize
2424
// CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
2525
// CHECK-SANITIZE: [[CONT]]:
2626
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8* %[[DATA_RELOADED]], i64 1073741824) ]

0 commit comments

Comments
 (0)