Skip to content

Commit 9051ce0

Browse files
committed
[IR][ASMParser] Use default AS for alloca without explicit AS
The [LangRef](https://llvm.org/docs/LangRef.html#alloca-instruction) says about alloca instructions: "If the address space is not explicitly specified, the object is allocated in the alloca address space from the datalayout string." So far, while the BitcodeReader follows this specification and uses the alloca AS from the datalayout when no AS record is present, the LLParser instead used AS 0 as the default. Similarly, the AsmWriter would omit the AS iff it is 0. This patch changes the textual IR parser and writer to follow the LangRef: - The LLParser now uses the alloca AS from the datalayout for allocas without explicit AS. - The AsmWriter only omits the addrspace of an alloca instruction if it is 0 and if that is the default address space. It would be possible to always omit the AS if it is the default AS or to never omit the AS in the AsmWriter, but both variants would require changing many test cases without much benefit. This patch can "break" existing textual IR if it contains allocas without explicit AS while the datalayout specifies a non-zero alloca AS. The large OpenMP Transforms test cases were adjusted by changing all allocas without explicit AS to use AS 0 explicitly, to preserve their original semantics. For SWDEV-511252.
1 parent e65faed commit 9051ce0

File tree

16 files changed

+1065
-1015
lines changed

16 files changed

+1065
-1015
lines changed

llvm/include/llvm/AsmParser/LLParser.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ namespace llvm {
326326
bool parseOptionalStackAlignment(unsigned &Alignment);
327327
bool parseOptionalCommaAlign(MaybeAlign &Alignment, bool &AteExtraComma);
328328
bool parseOptionalCommaAddrSpace(unsigned &AddrSpace, LocTy &Loc,
329-
bool &AteExtraComma);
329+
bool &AteExtraComma,
330+
unsigned DefaultAS = 0);
330331
bool parseAllocSizeArguments(unsigned &BaseSizeArg,
331332
std::optional<unsigned> &HowManyArg);
332333
bool parseVScaleRangeArguments(unsigned &MinValue, unsigned &MaxValue);

llvm/lib/AsmParser/LLParser.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2711,7 +2711,8 @@ bool LLParser::parseOptionalCommaAlign(MaybeAlign &Alignment,
27112711
/// This returns with AteExtraComma set to true if it ate an excess comma at the
27122712
/// end.
27132713
bool LLParser::parseOptionalCommaAddrSpace(unsigned &AddrSpace, LocTy &Loc,
2714-
bool &AteExtraComma) {
2714+
bool &AteExtraComma,
2715+
unsigned DefaultAS) {
27152716
AteExtraComma = false;
27162717
while (EatIfPresent(lltok::comma)) {
27172718
// Metadata at the end is an early exit.
@@ -2724,7 +2725,7 @@ bool LLParser::parseOptionalCommaAddrSpace(unsigned &AddrSpace, LocTy &Loc,
27242725
if (Lex.getKind() != lltok::kw_addrspace)
27252726
return error(Lex.getLoc(), "expected metadata or 'addrspace'");
27262727

2727-
if (parseOptionalAddrSpace(AddrSpace))
2728+
if (parseOptionalAddrSpace(AddrSpace, DefaultAS))
27282729
return true;
27292730
}
27302731

@@ -8354,7 +8355,8 @@ int LLParser::parseAlloc(Instruction *&Inst, PerFunctionState &PFS) {
83548355
Value *Size = nullptr;
83558356
LocTy SizeLoc, TyLoc, ASLoc;
83568357
MaybeAlign Alignment;
8357-
unsigned AddrSpace = 0;
8358+
unsigned DefaultAS = M->getDataLayout().getAllocaAddrSpace();
8359+
unsigned AddrSpace = DefaultAS;
83588360
Type *Ty = nullptr;
83598361

83608362
bool IsInAlloca = EatIfPresent(lltok::kw_inalloca);
@@ -8371,11 +8373,12 @@ int LLParser::parseAlloc(Instruction *&Inst, PerFunctionState &PFS) {
83718373
if (Lex.getKind() == lltok::kw_align) {
83728374
if (parseOptionalAlignment(Alignment))
83738375
return true;
8374-
if (parseOptionalCommaAddrSpace(AddrSpace, ASLoc, AteExtraComma))
8376+
if (parseOptionalCommaAddrSpace(AddrSpace, ASLoc, AteExtraComma,
8377+
DefaultAS))
83758378
return true;
83768379
} else if (Lex.getKind() == lltok::kw_addrspace) {
83778380
ASLoc = Lex.getLoc();
8378-
if (parseOptionalAddrSpace(AddrSpace))
8381+
if (parseOptionalAddrSpace(AddrSpace, DefaultAS))
83798382
return true;
83808383
} else if (Lex.getKind() == lltok::MetadataVar) {
83818384
AteExtraComma = true;
@@ -8386,11 +8389,12 @@ int LLParser::parseAlloc(Instruction *&Inst, PerFunctionState &PFS) {
83868389
if (Lex.getKind() == lltok::kw_align) {
83878390
if (parseOptionalAlignment(Alignment))
83888391
return true;
8389-
if (parseOptionalCommaAddrSpace(AddrSpace, ASLoc, AteExtraComma))
8392+
if (parseOptionalCommaAddrSpace(AddrSpace, ASLoc, AteExtraComma,
8393+
DefaultAS))
83908394
return true;
83918395
} else if (Lex.getKind() == lltok::kw_addrspace) {
83928396
ASLoc = Lex.getLoc();
8393-
if (parseOptionalAddrSpace(AddrSpace))
8397+
if (parseOptionalAddrSpace(AddrSpace, DefaultAS))
83948398
return true;
83958399
} else if (Lex.getKind() == lltok::MetadataVar) {
83968400
AteExtraComma = true;

llvm/lib/IR/AsmWriter.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4724,7 +4724,11 @@ void AssemblyWriter::printInstruction(const Instruction &I) {
47244724
}
47254725

47264726
unsigned AddrSpace = AI->getAddressSpace();
4727-
if (AddrSpace != 0) {
4727+
unsigned DefaultAllocaAS =
4728+
I.getModule()->getDataLayout().getAllocaAddrSpace();
4729+
// Avoid confusion by omitting the addrspace only if it is 0 and that is the
4730+
// default. Dropping the "AddrSpace != 0" condition would also be correct.
4731+
if (AddrSpace != 0 || AddrSpace != DefaultAllocaAS) {
47284732
Out << ", addrspace(" << AddrSpace << ')';
47294733
}
47304734
} else if (isa<CastInst>(I)) {
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2+
3+
target datalayout = "A9"
4+
; CHECK: target datalayout = "A9"
5+
6+
7+
; CHECK: %alloca_scalar_no_align = alloca i32, align 4, addrspace(9)
8+
; CHECK-NEXT: %alloca_scalar_align4 = alloca i32, align 4, addrspace(9)
9+
; CHECK-NEXT: %alloca_scalar_no_align_metadata = alloca i32, align 4, addrspace(9), !foo !0
10+
; CHECK-NEXT: %alloca_scalar_align4_metadata = alloca i32, align 4, addrspace(9), !foo !0
11+
; CHECK-NEXT: %alloca_inalloca_scalar_no_align = alloca inalloca i32, align 4, addrspace(9)
12+
; CHECK-NEXT: %alloca_inalloca_scalar_align4_metadata = alloca inalloca i32, align 4, addrspace(9), !foo !0
13+
define void @use_alloca_default() {
14+
%alloca_scalar_no_align = alloca i32
15+
%alloca_scalar_align4 = alloca i32, align 4
16+
%alloca_scalar_no_align_metadata = alloca i32, !foo !0
17+
%alloca_scalar_align4_metadata = alloca i32, align 4, !foo !0
18+
%alloca_inalloca_scalar_no_align = alloca inalloca i32
19+
%alloca_inalloca_scalar_align4_metadata = alloca inalloca i32, align 4, !foo !0
20+
21+
ret void
22+
}
23+
24+
; CHECK: %alloca_scalar_no_align = alloca i32, align 4, addrspace(0)
25+
; CHECK-NEXT: %alloca_scalar_align4 = alloca i32, align 4, addrspace(0)
26+
; CHECK-NEXT: %alloca_scalar_no_align_metadata = alloca i32, align 4, addrspace(0), !foo !0
27+
; CHECK-NEXT: %alloca_scalar_align4_metadata = alloca i32, align 4, addrspace(0), !foo !0
28+
; CHECK-NEXT: %alloca_inalloca_scalar_no_align = alloca inalloca i32, align 4, addrspace(0)
29+
; CHECK-NEXT: %alloca_inalloca_scalar_align4_metadata = alloca inalloca i32, align 4, addrspace(0), !foo !0
30+
define void @use_alloca_nondefault0() {
31+
%alloca_scalar_no_align = alloca i32, addrspace(0)
32+
%alloca_scalar_align4 = alloca i32, align 4, addrspace(0)
33+
%alloca_scalar_no_align_metadata = alloca i32, addrspace(0), !foo !0
34+
%alloca_scalar_align4_metadata = alloca i32, align 4, addrspace(0), !foo !0
35+
%alloca_inalloca_scalar_no_align = alloca inalloca i32, addrspace(0)
36+
%alloca_inalloca_scalar_align4_metadata = alloca inalloca i32, align 4, addrspace(0), !foo !0
37+
38+
ret void
39+
}
40+
41+
!0 = !{}

llvm/test/Assembler/symbolic-addrspace.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ target datalayout = "A1-G2-P3"
3838
define void @foo() {
3939
; ALLOCA-IN-GLOBALS: %alloca = alloca i32, align 4, addrspace(2){{$}}
4040
; ALLOCA-IN-GLOBALS: %alloca2 = alloca i32, align 4, addrspace(1){{$}}
41-
; ALLOCA-IN-GLOBALS: %alloca3 = alloca i32, align 4{{$}}
41+
; ALLOCA-IN-GLOBALS: %alloca3 = alloca i32, align 4, addrspace(1){{$}}
4242
; ALLOCA-IN-GLOBALS: %alloca4 = alloca i32, align 4, addrspace(3){{$}}
4343
%alloca = alloca i32, addrspace("G")
4444
%alloca2 = alloca i32, addrspace("A")

llvm/test/CodeGen/AMDGPU/assert-wrong-alloca-addrspace.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare void @func(ptr)
1010

1111
define void @main() {
1212
bb:
13-
%alloca = alloca i32, align 4
13+
%alloca = alloca i32, align 4, addrspace(0)
1414
call void @func(ptr %alloca)
1515
ret void
1616
}

llvm/test/CodeGen/AMDGPU/lower-indirect-lds-references.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ define amdgpu_kernel void @offloading_kernel() {
1616
}
1717

1818
define void @call_unknown() {
19-
%1 = alloca ptr, align 8
19+
%1 = alloca ptr, align 8, addrspace(0)
2020
%2 = call i32 %1()
2121
ret void
2222
}

llvm/test/Transforms/Attributor/ArgumentPromotion/alloca-as.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ define i32 @bar(i32 %arg) {
1010
; TUNIT-LABEL: define {{[^@]+}}@bar
1111
; TUNIT-SAME: (i32 [[ARG:%.*]]) {
1212
; TUNIT-NEXT: entry:
13-
; TUNIT-NEXT: [[STACK:%.*]] = alloca i32, align 4
13+
; TUNIT-NEXT: [[STACK:%.*]] = alloca i32, align 4, addrspace(0)
1414
; TUNIT-NEXT: store i32 [[ARG]], ptr [[STACK]], align 4
1515
; TUNIT-NEXT: [[TMP0:%.*]] = load i32, ptr [[STACK]], align 4
1616
; TUNIT-NEXT: [[CALL:%.*]] = call i32 @foo(i32 [[TMP0]])
@@ -19,13 +19,13 @@ define i32 @bar(i32 %arg) {
1919
; CGSCC-LABEL: define {{[^@]+}}@bar
2020
; CGSCC-SAME: (i32 [[ARG:%.*]]) {
2121
; CGSCC-NEXT: entry:
22-
; CGSCC-NEXT: [[STACK:%.*]] = alloca i32, align 4
22+
; CGSCC-NEXT: [[STACK:%.*]] = alloca i32, align 4, addrspace(0)
2323
; CGSCC-NEXT: store i32 [[ARG]], ptr [[STACK]], align 4
2424
; CGSCC-NEXT: [[CALL:%.*]] = call i32 @foo(i32 [[ARG]])
2525
; CGSCC-NEXT: ret i32 [[CALL]]
2626
;
2727
entry:
28-
%stack = alloca i32
28+
%stack = alloca i32, addrspace(0)
2929
store i32 %arg, ptr %stack
3030
%call = call i32 @foo(ptr %stack)
3131
ret i32 %call

llvm/test/Transforms/InstCombine/alloca-in-non-alloca-as.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ declare void @use2(ptr, ptr)
1212
define weak amdgpu_kernel void @__omp_offloading_802_ea0109_main_l8(ptr %a) {
1313
; CHECK-LABEL: @__omp_offloading_802_ea0109_main_l8(
1414
; CHECK-NEXT: .master:
15-
; CHECK-NEXT: [[TMP0:%.*]] = alloca [8 x i8], align 1
15+
; CHECK-NEXT: [[TMP0:%.*]] = alloca [8 x i8], align 1, addrspace(0)
1616
; CHECK-NEXT: call void @use2(ptr nonnull [[TMP0]], ptr nonnull [[TMP0]])
1717
; CHECK-NEXT: ret void
1818
;
1919
.master:
20-
%0 = alloca i8, i64 8, align 1
20+
%0 = alloca i8, i64 8, align 1, addrspace(0)
2121
store ptr undef, ptr %0, align 8
2222
call void @use2(ptr %0, ptr %0)
2323
ret void
@@ -28,23 +28,23 @@ define weak amdgpu_kernel void @__omp_offloading_802_ea0109_main_l8(ptr %a) {
2828
define void @spam(ptr %arg1) {
2929
; CHECK-LABEL: @spam(
3030
; CHECK-NEXT: bb:
31-
; CHECK-NEXT: [[ALLOCA1:%.*]] = alloca [0 x [30 x %struct.widget]], align 16
31+
; CHECK-NEXT: [[ALLOCA1:%.*]] = alloca [0 x [30 x %struct.widget]], align 16, addrspace(0)
3232
; CHECK-NEXT: call void @zot(ptr nonnull [[ALLOCA1]])
3333
; CHECK-NEXT: ret void
3434
;
3535
bb:
36-
%alloca = alloca [30 x %struct.widget], i32 0, align 16
36+
%alloca = alloca [30 x %struct.widget], i32 0, align 16, addrspace(0)
3737
call void @zot(ptr %alloca)
3838
ret void
3939
}
4040

4141
define i1 @alloca_addrspace_0_nonnull() {
4242
; CHECK-LABEL: @alloca_addrspace_0_nonnull(
43-
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i8, align 1
43+
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i8, align 1, addrspace(0)
4444
; CHECK-NEXT: call void @use(ptr nonnull [[ALLOCA]])
4545
; CHECK-NEXT: ret i1 true
4646
;
47-
%alloca = alloca i8
47+
%alloca = alloca i8, addrspace(0)
4848
call void @use(ptr %alloca)
4949
%cmp = icmp ne ptr %alloca, null
5050
ret i1 %cmp

llvm/test/Transforms/InstCombine/ptr-replace-alloca.ll

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ define i32 @remove_alloca_ptr_arg(i1 %c, ptr %ptr) {
153153
; CHECK-NEXT: ret i32 [[V]]
154154
;
155155
entry:
156-
%alloca = alloca [32 x i8]
156+
%alloca = alloca [32 x i8], addrspace(0)
157157
call void @llvm.memcpy.p0.p0.i64(ptr %alloca, ptr @g1, i64 32, i1 false)
158158
br i1 %c, label %if, label %join
159159

@@ -212,7 +212,7 @@ define i32 @test_memcpy_after_phi(i1 %cond, ptr %ptr) {
212212
; CHECK-NEXT: ret i32 [[V]]
213213
;
214214
entry:
215-
%a = alloca [32 x i8]
215+
%a = alloca [32 x i8], addrspace(0)
216216
br i1 %cond, label %if, label %join
217217

218218
if:
@@ -228,7 +228,7 @@ join:
228228
define i32 @addrspace_diff_keep_alloca(i1 %cond, ptr %x) {
229229
; CHECK-LABEL: @addrspace_diff_keep_alloca(
230230
; CHECK-NEXT: entry:
231-
; CHECK-NEXT: [[A:%.*]] = alloca [32 x i8], align 1
231+
; CHECK-NEXT: [[A:%.*]] = alloca [32 x i8], align 1, addrspace(0)
232232
; CHECK-NEXT: call void @llvm.memcpy.p0.p1.i64(ptr noundef nonnull align 1 dereferenceable(32) [[A]], ptr addrspace(1) noundef align 16 dereferenceable(32) @g2, i64 32, i1 false)
233233
; CHECK-NEXT: br i1 [[COND:%.*]], label [[IF:%.*]], label [[JOIN:%.*]]
234234
; CHECK: if:
@@ -239,7 +239,7 @@ define i32 @addrspace_diff_keep_alloca(i1 %cond, ptr %x) {
239239
; CHECK-NEXT: ret i32 [[V]]
240240
;
241241
entry:
242-
%a = alloca [32 x i8]
242+
%a = alloca [32 x i8], addrspace(0)
243243
call void @llvm.memcpy.p0.p1.i64(ptr %a, ptr addrspace(1) @g2, i64 32, i1 false)
244244
br i1 %cond, label %if, label %join
245245

@@ -255,7 +255,7 @@ join:
255255
define i32 @addrspace_diff_keep_alloca_extra_gep(i1 %cond, ptr %x) {
256256
; CHECK-LABEL: @addrspace_diff_keep_alloca_extra_gep(
257257
; CHECK-NEXT: entry:
258-
; CHECK-NEXT: [[A:%.*]] = alloca [32 x i8], align 1
258+
; CHECK-NEXT: [[A:%.*]] = alloca [32 x i8], align 1, addrspace(0)
259259
; CHECK-NEXT: call void @llvm.memcpy.p0.p1.i64(ptr noundef nonnull align 1 dereferenceable(32) [[A]], ptr addrspace(1) noundef align 16 dereferenceable(32) @g2, i64 32, i1 false)
260260
; CHECK-NEXT: br i1 [[COND:%.*]], label [[IF:%.*]], label [[JOIN:%.*]]
261261
; CHECK: if:
@@ -267,7 +267,7 @@ define i32 @addrspace_diff_keep_alloca_extra_gep(i1 %cond, ptr %x) {
267267
; CHECK-NEXT: ret i32 [[V]]
268268
;
269269
entry:
270-
%a = alloca [32 x i8]
270+
%a = alloca [32 x i8], addrspace(0)
271271
call void @llvm.memcpy.p0.p1.i64(ptr %a, ptr addrspace(1) @g2, i64 32, i1 false)
272272
%gep = getelementptr i8, ptr %a, i64 4
273273
br i1 %cond, label %if, label %join
@@ -293,7 +293,7 @@ define i32 @addrspace_diff_remove_alloca(i1 %cond) {
293293
; CHECK-NEXT: ret i32 [[V]]
294294
;
295295
entry:
296-
%a = alloca [32 x i8]
296+
%a = alloca [32 x i8], addrspace(0)
297297
call void @llvm.memcpy.p0.p1.i64(ptr %a, ptr addrspace(1) @g2, i64 32, i1 false)
298298
%gep = getelementptr inbounds [32 x i8], ptr %a, i32 0, i32 2
299299
br i1 %cond, label %if, label %join
@@ -320,7 +320,7 @@ define i32 @phi_loop(i1 %c) {
320320
; CHECK-NEXT: ret i32 [[V]]
321321
;
322322
entry:
323-
%alloca = alloca [32 x i8]
323+
%alloca = alloca [32 x i8], addrspace(0)
324324
call void @llvm.memcpy.p0.p0.i64(ptr %alloca, ptr @g1, i64 32, i1 false)
325325
br label %loop
326326

@@ -337,7 +337,7 @@ exit:
337337
define i32 @phi_loop_different_addrspace(i1 %c) {
338338
; CHECK-LABEL: @phi_loop_different_addrspace(
339339
; CHECK-NEXT: entry:
340-
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 1
340+
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 1, addrspace(0)
341341
; CHECK-NEXT: call void @llvm.memcpy.p0.p1.i64(ptr noundef nonnull align 1 dereferenceable(32) [[ALLOCA]], ptr addrspace(1) noundef align 16 dereferenceable(32) @g2, i64 32, i1 false)
342342
; CHECK-NEXT: br label [[LOOP:%.*]]
343343
; CHECK: loop:
@@ -349,7 +349,7 @@ define i32 @phi_loop_different_addrspace(i1 %c) {
349349
; CHECK-NEXT: ret i32 [[V]]
350350
;
351351
entry:
352-
%alloca = alloca [32 x i8]
352+
%alloca = alloca [32 x i8], addrspace(0)
353353
call void @llvm.memcpy.p0.p1.i64(ptr %alloca, ptr addrspace(1) @g2, i64 32, i1 false)
354354
br label %loop
355355

@@ -371,7 +371,7 @@ define i8 @select_same_addrspace_remove_alloca(i1 %cond, ptr %p) {
371371
; CHECK-NEXT: ret i8 [[LOAD]]
372372
;
373373
entry:
374-
%alloca = alloca [32 x i8]
374+
%alloca = alloca [32 x i8], addrspace(0)
375375
call void @llvm.memcpy.p0.p0.i64(ptr %alloca, ptr @g1, i64 32, i1 false)
376376
%ptr = select i1 %cond, ptr %alloca, ptr %p
377377
%load = load i8, ptr %ptr
@@ -381,14 +381,14 @@ entry:
381381
define i8 @select_after_memcpy_keep_alloca(i1 %cond, ptr %p) {
382382
; CHECK-LABEL: @select_after_memcpy_keep_alloca(
383383
; CHECK-NEXT: entry:
384-
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 1
384+
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [32 x i8], align 1, addrspace(0)
385385
; CHECK-NEXT: [[PTR:%.*]] = select i1 [[COND:%.*]], ptr [[ALLOCA]], ptr [[P:%.*]]
386386
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) [[PTR]], ptr noundef nonnull align 16 dereferenceable(32) @g1, i64 32, i1 false)
387387
; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr [[PTR]], align 1
388388
; CHECK-NEXT: ret i8 [[LOAD]]
389389
;
390390
entry:
391-
%alloca = alloca [32 x i8]
391+
%alloca = alloca [32 x i8], addrspace(0)
392392
%ptr = select i1 %cond, ptr %alloca, ptr %p
393393
call void @llvm.memcpy.p0.p0.i64(ptr %ptr, ptr @g1, i64 32, i1 false)
394394
%load = load i8, ptr %ptr
@@ -418,7 +418,7 @@ define i8 @select_diff_addrspace_remove_alloca(i1 %cond, ptr %p) {
418418
; CHECK-NEXT: ret i8 0
419419
;
420420
entry:
421-
%alloca = alloca [32 x i8]
421+
%alloca = alloca [32 x i8], addrspace(0)
422422
call void @llvm.memcpy.p0.p1.i64(ptr %alloca, ptr addrspace(1) @g2, i64 32, i1 false)
423423
%gep = getelementptr inbounds [32 x i8], ptr %alloca, i32 0, i32 2
424424
%sel = select i1 %cond, ptr %alloca, ptr %gep
@@ -435,7 +435,7 @@ define i8 @select_diff_addrspace_remove_alloca_asan(i1 %cond, ptr %p) sanitize_a
435435
; CHECK-NEXT: ret i8 [[LOAD]]
436436
;
437437
entry:
438-
%alloca = alloca [32 x i8]
438+
%alloca = alloca [32 x i8], addrspace(0)
439439
call void @llvm.memcpy.p0.p1.i64(ptr %alloca, ptr addrspace(1) @g2, i64 32, i1 false)
440440
%gep = getelementptr inbounds [32 x i8], ptr %alloca, i32 0, i32 2
441441
%sel = select i1 %cond, ptr %alloca, ptr %gep

0 commit comments

Comments
 (0)