Skip to content

Commit 53f07f4

Browse files
Ferdinand LemaireAlexandreEichenberger
Ferdinand Lemaire
andauthored
Update llvm-project to 60a7d33106d3cd645d3100a8a935a1e3837f885d (#2898)
Signed-off-by: Ferdinand Lemaire <[email protected]> Co-authored-by: Alexandre Eichenberger <[email protected]>
1 parent 74f9df6 commit 53f07f4

File tree

15 files changed

+88
-42
lines changed

15 files changed

+88
-42
lines changed

docs/BuildOnLinuxOSX.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Firstly, install MLIR (as a part of LLVM-Project):
1515
``` bash
1616
git clone -n https://github.com/llvm/llvm-project.git
1717
# Check out a specific branch that is known to work with ONNX-MLIR.
18-
cd llvm-project && git checkout 0913547d0e3939cc420e88ecd037240f33736820 && cd ..
18+
cd llvm-project && git checkout 60a7d33106d3cd645d3100a8a935a1e3837f885d && cd ..
1919
```
2020

2121
[same-as-file]: <> (utils/build-mlir.sh)

docs/BuildOnWindows.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Install MLIR (as a part of LLVM-Project):
5252
```shell
5353
git clone -n https://github.com/llvm/llvm-project.git
5454
# Check out a specific branch that is known to work with ONNX-MLIR.
55-
cd llvm-project && git checkout 0913547d0e3939cc420e88ecd037240f33736820 && cd ..
55+
cd llvm-project && git checkout 60a7d33106d3cd645d3100a8a935a1e3837f885d && cd ..
5656
```
5757

5858
[same-as-file]: <> (utils/build-mlir.cmd)

src/Accelerators/NNPA/Conversion/ZLowToLLVM/ZLowToLLVMCommon.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ Value callApi(PatternRewriter &rewriter, Location loc, ModuleOp module,
287287
Type outputTy = apiSpec.outputTy;
288288
if (!mlir::isa<LLVM::LLVMVoidType>(outputTy))
289289
outputTys.emplace_back(outputTy);
290-
return create.llvm.call(
291-
ArrayRef<Type>(outputTys), symbolRef, ArrayRef<Value>(params));
290+
return create.llvm.call(ArrayRef<Type>(outputTys), symbolRef,
291+
ArrayRef<Value>(params), apiSpec.isVarArg);
292292
}
293293

294294
size_t getRankFromMemRefType(LLVM::LLVMStructType memRefTy) {

src/Conversion/KrnlToLLVM/KrnlPrint.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ class KrnlPrintOpLowering : public ConversionPattern {
5555
Value formatSpecPtr = getPtrToGlobalString(formatSpec, loc, rewriter);
5656

5757
if (input)
58-
create.llvm.call({}, printfFuncRef, {formatSpecPtr, input});
58+
create.llvm.call(
59+
{}, printfFuncRef, {formatSpecPtr, input}, /*isVarArg*/ true);
5960
else
60-
create.llvm.call({}, printfFuncRef, {formatSpecPtr});
61+
create.llvm.call({}, printfFuncRef, {formatSpecPtr}, /*isVarArg*/ true);
6162

6263
rewriter.eraseOp(op);
6364
return success();

src/Dialect/Mlir/DialectBuilder.cpp

+25-2
Original file line numberDiff line numberDiff line change
@@ -1930,24 +1930,47 @@ void LLVMBuilder::br(ArrayRef<Value> destOperands, Block *destBlock) const {
19301930
b().create<LLVM::BrOp>(loc(), destOperands, destBlock);
19311931
}
19321932

1933+
void LLVMBuilder::handleVarArgCall(LLVM::CallOp &callOp,
1934+
ArrayRef<Type> resultTypes, ArrayRef<Value> inputs) const {
1935+
// Define result type (void or 1).
1936+
Type resultType;
1937+
if (resultTypes.size() == 0 || isa<LLVM::LLVMVoidType>(resultTypes[0])) {
1938+
MLIRContext *ctx = b().getContext();
1939+
resultType = LLVM::LLVMVoidType::get(ctx);
1940+
} else {
1941+
resultType = resultTypes[0];
1942+
}
1943+
// Define input types.
1944+
llvm::SmallVector<Type, 4> inputTypes;
1945+
for (int64_t i = 0; i < (int64_t)inputs.size(); ++i)
1946+
inputTypes.emplace_back(inputs[i].getType());
1947+
auto typeSignature =
1948+
LLVM::LLVMFunctionType::get(resultType, inputTypes, /*is var arg*/ true);
1949+
callOp.setVarCalleeType(typeSignature);
1950+
}
1951+
19331952
Value LLVMBuilder::call(ArrayRef<Type> resultTypes, StringRef funcName,
1934-
ArrayRef<Value> inputs) const {
1953+
ArrayRef<Value> inputs, bool isVarArg) const {
19351954
assert((resultTypes.size() == 0 || resultTypes.size() == 1) &&
19361955
"LLVM:CallOp must return either 0 or 1 value");
19371956
LLVM::CallOp callOp =
19381957
b().create<LLVM::CallOp>(loc(), resultTypes, funcName, inputs);
1958+
if (isVarArg)
1959+
handleVarArgCall(callOp, resultTypes, inputs);
19391960
// CallOp may return either 0 or 1 value.
19401961
if (resultTypes.empty())
19411962
return nullptr;
19421963
return callOp.getResult();
19431964
}
19441965

19451966
Value LLVMBuilder::call(ArrayRef<Type> resultTypes,
1946-
FlatSymbolRefAttr funcSymbol, ArrayRef<Value> inputs) const {
1967+
FlatSymbolRefAttr funcSymbol, ArrayRef<Value> inputs, bool isVarArg) const {
19471968
assert((resultTypes.size() == 0 || resultTypes.size() == 1) &&
19481969
"LLVM:CallOp must return either 0 or 1 value");
19491970
LLVM::CallOp callOp =
19501971
b().create<LLVM::CallOp>(loc(), resultTypes, funcSymbol, inputs);
1972+
if (isVarArg)
1973+
handleVarArgCall(callOp, resultTypes, inputs);
19511974
// CallOp may return either 0 or 1 value.
19521975
if (resultTypes.empty())
19531976
return nullptr;

src/Dialect/Mlir/DialectBuilder.hpp

+12-4
Original file line numberDiff line numberDiff line change
@@ -627,10 +627,11 @@ struct LLVMBuilder final : DialectBuilder {
627627

628628
// CallOp
629629
mlir::Value call(mlir::ArrayRef<mlir::Type> resultTypes,
630-
llvm::StringRef funcName, mlir::ArrayRef<mlir::Value> inputs) const;
630+
llvm::StringRef funcName, mlir::ArrayRef<mlir::Value> inputs,
631+
bool isVarArg = false) const;
631632
mlir::Value call(mlir::ArrayRef<mlir::Type> resultTypes,
632-
mlir::FlatSymbolRefAttr funcSymbol,
633-
mlir::ArrayRef<mlir::Value> inputs) const;
633+
mlir::FlatSymbolRefAttr funcSymbol, mlir::ArrayRef<mlir::Value> inputs,
634+
bool isVarArg = false) const;
634635

635636
// CondBrOp
636637
void condBr(mlir::Value cond, mlir::Block *trueBlock,
@@ -649,7 +650,8 @@ struct LLVMBuilder final : DialectBuilder {
649650
mlir::Value extractValue(mlir::Type resultType, mlir::Value container,
650651
llvm::ArrayRef<int64_t> position) const;
651652

652-
// FuncOp
653+
// FuncOp (assume non-variadic functions, otherwise add support like in
654+
// seen in `call` in this file).
653655
mlir::LLVM::LLVMFuncOp func(llvm::StringRef name, mlir::Type type,
654656
bool createUniqueFunc = false) const;
655657

@@ -752,6 +754,12 @@ struct LLVMBuilder final : DialectBuilder {
752754
}
753755
return symbol + postfix;
754756
}
757+
758+
private:
759+
// Support for calling vararg functions; add the necessary type.
760+
void handleVarArgCall(mlir::LLVM::CallOp &callOp,
761+
mlir::ArrayRef<mlir::Type> resultTypes,
762+
mlir::ArrayRef<mlir::Value> inputs) const;
755763
};
756764

757765
//===----------------------------------------------------------------------===//

src/onnx-mlir.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
#include <regex>
1515

16+
#include "mlir/IR/AsmState.h"
1617
#include "mlir/Support/Timing.h"
1718
#include "src/Compiler/CompilerOptions.hpp"
1819
#include "src/Compiler/CompilerUtils.hpp"
@@ -28,7 +29,6 @@ int main(int argc, char *argv[]) {
2829
mlir::registerAsmPrinterCLOptions();
2930
mlir::registerMLIRContextCLOptions();
3031
mlir::registerPassManagerCLOptions();
31-
mlir::registerAsmPrinterCLOptions();
3232

3333
llvm::cl::SetVersionPrinter(getVersionPrinter);
3434

test/mlir/accelerators/nnpa/conversion/lower-all-to-llvm-constant-shape.mlir

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ func.func @test_zlow_softmax_constant_shape() -> () {
2020
// CHECK: %[[DIM0:.*]] = llvm.mlir.constant(1 : i64) : i64
2121
// CHECK: %[[DIM1:.*]] = llvm.mlir.constant(5 : i64) : i64
2222
// CHECK: %[[DIM2:.*]] = llvm.mlir.constant(10 : i64) : i64
23-
// CHECK: llvm.call @zdnn_init_pre_transformed_desc({{.*}}, {{.*}}, {{.*}}, %[[DIM0]], %[[DIM1]], %[[DIM2]]) : (i64, i64, !llvm.ptr, i64, i64, i64) -> ()
23+
// CHECK: llvm.call @zdnn_init_pre_transformed_desc({{.*}}, {{.*}}, {{.*}}, %[[DIM0]], %[[DIM1]], %[[DIM2]]) vararg(!llvm.func<void (i64, i64, ptr, i64, i64, i64, ...)>) : (i64, i64, !llvm.ptr, i64, i64, i64) -> ()
2424

2525
}

test/mlir/accelerators/nnpa/conversion/lower-all-to-llvm-typed-pointer.mlir

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func.func @test_stick() -> () {
6262
// CHECK: [[UNSTICKIFIED:%.+]] = llvm.extractvalue [[UNSTICKIFIED_MEMREF]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
6363
// CHECK: [[UNSTICKIFIED_I8PTR:%.+]] = llvm.bitcast [[UNSTICKIFIED]] : !llvm.ptr to !llvm.ptr
6464
// CHECK: [[ZTENSOR_I8PTR:%.+]] = llvm.bitcast [[ZTENSOR]] : !llvm.ptr to !llvm.ptr
65-
// CHECK: {{.*}} = llvm.call @zdnn_transform_ztensor([[ZTENSOR_I8PTR]], [[UNSTICKIFIED_I8PTR]]) : (!llvm.ptr, !llvm.ptr) -> i32
65+
// CHECK: {{.*}} = llvm.call @zdnn_transform_ztensor([[ZTENSOR_I8PTR]], [[UNSTICKIFIED_I8PTR]]) vararg(!llvm.func<i32 (ptr, ptr, ...)>) : (!llvm.ptr, !llvm.ptr) -> i32
6666

6767
// CHECK: llvm.return
6868
}

test/mlir/accelerators/nnpa/conversion/lower-all-to-llvm.mlir

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func.func @test_stick() -> () {
6161
// CHECK: [[UNSTICKIFIED:%.+]] = llvm.extractvalue [[UNSTICKIFIED_MEMREF]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
6262
// CHECK: [[UNSTICKIFIED_I8PTR:%.+]] = llvm.bitcast [[UNSTICKIFIED]] : !llvm.ptr to !llvm.ptr
6363
// CHECK: [[ZTENSOR_I8PTR:%.+]] = llvm.bitcast [[ZTENSOR]] : !llvm.ptr to !llvm.ptr
64-
// CHECK: {{.*}} = llvm.call @zdnn_transform_ztensor([[ZTENSOR_I8PTR]], [[UNSTICKIFIED_I8PTR]]) : (!llvm.ptr, !llvm.ptr) -> i32
64+
// CHECK: {{.*}} = llvm.call @zdnn_transform_ztensor([[ZTENSOR_I8PTR]], [[UNSTICKIFIED_I8PTR]]) vararg(!llvm.func<i32 (ptr, ptr, ...)>) : (!llvm.ptr, !llvm.ptr) -> i32
6565

6666
// CHECK: llvm.return
6767
}

test/mlir/conversion/krnl_to_llvm/input_verification.mlir

+12-12
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module {
88
func.func @main_graph(%arg0: memref<3x4x5xf32>, %arg1: memref<?x4x5xf32>) -> memref<3x4x5xf32> {
99
return %arg0 : memref<3x4x5xf32>
1010
}
11-
"krnl.entry_point"() {func = @main_graph, numInputs = 2 : i32, numOutputs = 1 : i32, signature = "[ { \22type\22 : \22f32\22 , \22dims\22 : [3 , 4 , 5] , \22name\22 : \22input0\22 }\0A , { \22type\22 : \22f32\22 , \22dims\22 : [-1 , 4 , 5] , \22name\22 : \22input1\22 }\0A\0A]\00@[ { \22type\22 : \22f32\22 , \22dims\22 : [3 , 4 , 5] , \22name\22 : \22output0\22 }\0A\0A]\00"} : () -> ()
11+
"krnl.entry_point"() {func = @main_graph, numInputs = 2 : i32, numOutputs = 1 : i32, signature = "[ { \22type\22 : \22f32\22 , \22dims\22 : [3 , 4 , 5] , \22name\22 : \22input0\22 }\0A , { \22type\22 : \22f32\22 , \22dims\22 : [-1 , 4 , 5] , \22name\22 : \22input1\22 }\0A\0A]\00@[ { \22type\22 : \22f32\22 , \22dims\22 : [3 , 4 , 5], \22name\22 : \22output0\22 }\0A\0A]\00"} : () -> ()
1212

1313
// CHECK: llvm.func @run_main_graph([[arg0_:.*]]: !llvm.ptr) -> !llvm.ptr {
1414
// CHECK-DAG: [[VAR_0:%.+]] = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
@@ -35,7 +35,7 @@ module {
3535
// CHECK: [[VAR_19_1_:%.+]] = llvm.icmp "ne" [[VAR_17_1_]], [[VAR_18_1_]] : i64
3636
// CHECK: llvm.cond_br [[VAR_19_1_]], ^bb1, ^bb2
3737
// CHECK: ^bb1: // pred: ^bb0
38-
// CHECK: llvm.call @printf([[VAR_16_1_]], [[VAR_18_1_]]) : (!llvm.ptr, i64) -> ()
38+
// CHECK: llvm.call @printf([[VAR_16_1_]], [[VAR_18_1_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
3939
// CHECK: [[VAR_22_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
4040
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_22_]] : i32, !llvm.ptr
4141
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -46,7 +46,7 @@ module {
4646
// CHECK: [[VAR_27_:%.+]] = llvm.icmp "ne" [[VAR_14_1_]], [[VAR_26_]] : i64
4747
// CHECK: llvm.cond_br [[VAR_27_]], ^bb3, ^bb4
4848
// CHECK: ^bb3: // pred: ^bb2
49-
// CHECK: llvm.call @printf([[VAR_13_1_]]) : (!llvm.ptr) -> ()
49+
// CHECK: llvm.call @printf([[VAR_13_1_]]) vararg(!llvm.func<void (ptr, ...)>) : (!llvm.ptr) -> ()
5050
// CHECK: [[VAR_29_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
5151
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_29_]] : i32, !llvm.ptr
5252
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -55,7 +55,7 @@ module {
5555
// CHECK: [[VAR_31_1_:%.+]] = llvm.icmp "ne" [[VAR_12_1_]], [[VAR_31_]] : i64
5656
// CHECK: llvm.cond_br [[VAR_31_1_]], ^bb5, ^bb6
5757
// CHECK: ^bb5: // pred: ^bb4
58-
// CHECK: llvm.call @printf([[VAR_11_1_]], [[VAR_31_]]) : (!llvm.ptr, i64) -> ()
58+
// CHECK: llvm.call @printf([[VAR_11_1_]], [[VAR_31_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
5959
// CHECK: [[VAR_31_2_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
6060
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_31_2_]] : i32, !llvm.ptr
6161
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -65,7 +65,7 @@ module {
6565
// CHECK: [[VAR_32_2_:%.+]] = llvm.icmp "ne" [[VAR_12_1_]], [[LOAD_VAR_32_MEM_]] : i64
6666
// CHECK: llvm.cond_br [[VAR_32_2_]], ^bb7, ^bb8
6767
// CHECK: ^bb7: // pred: ^bb6
68-
// CHECK: llvm.call @printf([[LOAD_arg2_MEM_1_]], [[LOAD_VAR_32_MEM_]]) : (!llvm.ptr, i64) -> ()
68+
// CHECK: llvm.call @printf([[LOAD_arg2_MEM_1_]], [[LOAD_VAR_32_MEM_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
6969
// CHECK: [[VAR_32_3_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
7070
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_32_3_]] : i32, !llvm.ptr
7171
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -75,7 +75,7 @@ module {
7575
// CHECK: [[VAR_40_:%.+]] = llvm.icmp "ne" [[VAR_9_2_]], [[LOAD_VAR_36_MEM_]] : i64
7676
// CHECK: llvm.cond_br [[VAR_40_]], ^bb9, ^bb10
7777
// CHECK: ^bb9: // pred: ^bb8
78-
// CHECK: llvm.call @printf([[VAR_8_2_]], [[LOAD_VAR_36_MEM_]]) : (!llvm.ptr, i64) -> ()
78+
// CHECK: llvm.call @printf([[VAR_8_2_]], [[LOAD_VAR_36_MEM_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
7979
// CHECK: [[VAR_41_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
8080
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_41_]] : i32, !llvm.ptr
8181
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -85,7 +85,7 @@ module {
8585
// CHECK: [[VAR_42_0_:%.+]] = llvm.icmp "ne" [[VAR_7_2_]], [[LOAD_VAR_40_MEM_]] : i64
8686
// CHECK: llvm.cond_br [[VAR_42_0_]], ^bb11, ^bb12
8787
// CHECK: ^bb11: // pred: ^bb10
88-
// CHECK: llvm.call @printf([[VAR_6_2_]], [[LOAD_VAR_40_MEM_]]) : (!llvm.ptr, i64) -> ()
88+
// CHECK: llvm.call @printf([[VAR_6_2_]], [[LOAD_VAR_40_MEM_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
8989
// CHECK: [[VAR_42_1_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
9090
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_42_1_]] : i32, !llvm.ptr
9191
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -96,7 +96,7 @@ module {
9696
// CHECK: [[VAR_45_:%.+]] = llvm.icmp "ne" [[VAR_14_1_]], [[VAR_44_]] : i64
9797
// CHECK: llvm.cond_br [[VAR_45_]], ^bb13, ^bb14
9898
// CHECK: ^bb13: // pred: ^bb12
99-
// CHECK: llvm.call @printf([[VAR_5_2_]]) : (!llvm.ptr) -> ()
99+
// CHECK: llvm.call @printf([[VAR_5_2_]]) vararg(!llvm.func<void (ptr, ...)>) : (!llvm.ptr) -> ()
100100
// CHECK: [[VAR_47_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
101101
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_47_]] : i32, !llvm.ptr
102102
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -105,7 +105,7 @@ module {
105105
// CHECK: [[VAR_49_:%.+]] = llvm.icmp "ne" [[VAR_12_1_]], [[VAR_48_]] : i64
106106
// CHECK: llvm.cond_br [[VAR_49_]], ^bb15, ^bb16
107107
// CHECK: ^bb15: // pred: ^bb14
108-
// CHECK: llvm.call @printf([[VAR_4_2_]], [[VAR_48_]]) : (!llvm.ptr, i64) -> ()
108+
// CHECK: llvm.call @printf([[VAR_4_2_]], [[VAR_48_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
109109
// CHECK: [[VAR_50_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
110110
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_50_]] : i32, !llvm.ptr
111111
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -115,7 +115,7 @@ module {
115115
// CHECK: [[VAR_53_:%.+]] = llvm.icmp "slt" [[LOAD_VAR_51_MEM_]], [[VAR_3_2_]] : i64
116116
// CHECK: llvm.cond_br [[VAR_53_]], ^bb17, ^bb18
117117
// CHECK: ^bb17: // pred: ^bb16
118-
// CHECK: llvm.call @printf([[VAR_2_2_]]) : (!llvm.ptr) -> ()
118+
// CHECK: llvm.call @printf([[VAR_2_2_]]) vararg(!llvm.func<void (ptr, ...)>) : (!llvm.ptr) -> ()
119119
// CHECK: [[VAR_54_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
120120
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_54_]] : i32, !llvm.ptr
121121
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -125,7 +125,7 @@ module {
125125
// CHECK: [[VAR_55_1_:%.+]] = llvm.icmp "ne" [[VAR_9_2_]], [[LOAD_VAR_55_MEM_]] : i64
126126
// CHECK: llvm.cond_br [[VAR_55_1_]], ^bb19, ^bb20
127127
// CHECK: ^bb19: // pred: ^bb18
128-
// CHECK: llvm.call @printf([[VAR_1_2_]], [[LOAD_VAR_55_MEM_]]) : (!llvm.ptr, i64) -> ()
128+
// CHECK: llvm.call @printf([[VAR_1_2_]], [[LOAD_VAR_55_MEM_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
129129
// CHECK: [[VAR_55_2_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
130130
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_55_2_]] : i32, !llvm.ptr
131131
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr
@@ -135,7 +135,7 @@ module {
135135
// CHECK: [[VAR_55_4_:%.+]] = llvm.icmp "ne" [[VAR_7_2_]], [[LOAD_VAR_54_MEM_]] : i64
136136
// CHECK: llvm.cond_br [[VAR_55_4_]], ^bb21, ^bb22
137137
// CHECK: ^bb21: // pred: ^bb20
138-
// CHECK: llvm.call @printf([[VAR_0_2_]], [[LOAD_VAR_54_MEM_]]) : (!llvm.ptr, i64) -> ()
138+
// CHECK: llvm.call @printf([[VAR_0_2_]], [[LOAD_VAR_54_MEM_]]) vararg(!llvm.func<void (ptr, i64, ...)>) : (!llvm.ptr, i64) -> ()
139139
// CHECK: [[VAR_56_:%.+]] = llvm.call @__errno_location() : () -> !llvm.ptr
140140
// CHECK: llvm.store [[VAR_15_1_]], [[VAR_56_]] : i32, !llvm.ptr
141141
// CHECK: llvm.return [[VAR_14_2_]] : !llvm.ptr

0 commit comments

Comments
 (0)