Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGen/non-power-of-2-alignment-assumptions.c
Show All 15 Lines | |||||
void t0(int align) { | void t0(int align) { | ||||
alloc(align); | alloc(align); | ||||
} | } | ||||
// CHECK-LABEL: @t1( | // CHECK-LABEL: @t1( | ||||
// CHECK-NEXT: entry: | // CHECK-NEXT: entry: | ||||
// CHECK-NEXT: [[ALIGN_ADDR:%.*]] = alloca i32, align 4 | // CHECK-NEXT: [[ALIGN_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK-NEXT: store i32 [[ALIGN:%.*]], i32* [[ALIGN_ADDR]], align 4 | // CHECK-NEXT: store i32 [[ALIGN:%.*]], i32* [[ALIGN_ADDR]], align 4 | ||||
// CHECK-NEXT: [[CALL:%.*]] = call i8* @alloc(i32 7) | // CHECK-NEXT: [[CALL:%.*]] = call i8* @alloc(i32 7) | ||||
// CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(i8* [[CALL]], i64 7) ] | |||||
// CHECK-NEXT: ret void | // CHECK-NEXT: ret void | ||||
// | // | ||||
void t1(int align) { | void t1(int align) { | ||||
alloc(7); | alloc(7); | ||||
} | } | ||||
// CHECK-LABEL: @t2( | // CHECK-LABEL: @t2( | ||||
// CHECK-NEXT: entry: | // CHECK-NEXT: entry: | ||||
// CHECK-NEXT: [[ALIGN_ADDR:%.*]] = alloca i32, align 4 | // CHECK-NEXT: [[ALIGN_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK-NEXT: store i32 [[ALIGN:%.*]], i32* [[ALIGN_ADDR]], align 4 | // CHECK-NEXT: store i32 [[ALIGN:%.*]], i32* [[ALIGN_ADDR]], align 4 | ||||
// CHECK-NEXT: [[CALL:%.*]] = call align 8 i8* @alloc(i32 8) | // CHECK-NEXT: [[CALL:%.*]] = call align 8 i8* @alloc(i32 8) | ||||
// CHECK-NEXT: ret void | // CHECK-NEXT: ret void | ||||
// | // | ||||
void t2(int align) { | void t2(int align) { | ||||
alloc(8); | alloc(8); | ||||
} | } |