File tree Expand file tree Collapse file tree 4 files changed +28
-2
lines changed Expand file tree Collapse file tree 4 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -859,6 +859,15 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
859
859
.addByValAttr (convertType (argTy.getElementType ())));
860
860
}
861
861
862
+ if (auto attr = func.getArgAttrOfType <UnitAttr>(argIdx, " llvm.nest" )) {
863
+ auto argTy = mlirArg.getType ();
864
+ if (!argTy.isa <LLVM::LLVMPointerType>())
865
+ return func.emitError (
866
+ " llvm.nest attribute attached to LLVM non-pointer argument" );
867
+ llvmArg.addAttrs (llvm::AttrBuilder (llvmArg.getContext ())
868
+ .addAttribute (llvm::Attribute::Nest));
869
+ }
870
+
862
871
mapValue (mlirArg, &llvmArg);
863
872
argIdx++;
864
873
}
Original file line number Diff line number Diff line change @@ -97,6 +97,11 @@ module {
97
97
llvm.return
98
98
}
99
99
100
+ // CHECK: llvm.func @nestattr(%{{.*}}: !llvm.ptr<i32> {llvm.nest})
101
+ llvm.func @nestattr (%arg0: !llvm.ptr <i32 > {llvm.nest }) {
102
+ llvm.return
103
+ }
104
+
100
105
// CHECK: llvm.func @variadic(...)
101
106
llvm.func @variadic (...)
102
107
Original file line number Diff line number Diff line change @@ -15,13 +15,20 @@ llvm.func @invalid_noalias(%arg0 : f32 {llvm.noalias}) -> f32 {
15
15
// -----
16
16
17
17
// expected-error @+1 {{llvm.sret attribute attached to LLVM non-pointer argument}}
18
- llvm.func @invalid_noalias (%arg0 : f32 {llvm.sret }) -> f32 {
18
+ llvm.func @invalid_sret (%arg0 : f32 {llvm.sret }) -> f32 {
19
+ llvm.return %arg0 : f32
20
+ }
21
+
22
+ // -----
23
+
24
+ // expected-error @+1 {{llvm.nest attribute attached to LLVM non-pointer argument}}
25
+ llvm.func @invalid_nest (%arg0 : f32 {llvm.nest }) -> f32 {
19
26
llvm.return %arg0 : f32
20
27
}
21
28
// -----
22
29
23
30
// expected-error @+1 {{llvm.byval attribute attached to LLVM non-pointer argument}}
24
- llvm.func @invalid_noalias (%arg0 : f32 {llvm.byval }) -> f32 {
31
+ llvm.func @invalid_byval (%arg0 : f32 {llvm.byval }) -> f32 {
25
32
llvm.return %arg0 : f32
26
33
}
27
34
Original file line number Diff line number Diff line change @@ -1057,6 +1057,11 @@ llvm.func @sretattr(%arg0: !llvm.ptr<i32> {llvm.sret}) {
1057
1057
llvm.return
1058
1058
}
1059
1059
1060
+ // CHECK-LABEL: define void @nestattr(i32* nest %
1061
+ llvm.func @nestattr (%arg0: !llvm.ptr <i32 > {llvm.nest }) {
1062
+ llvm.return
1063
+ }
1064
+
1060
1065
// CHECK-LABEL: define void @llvm_align(float* align 4 {{%*.}})
1061
1066
llvm.func @llvm_align (%arg0: !llvm.ptr <f32 > {llvm.align = 4 }) {
1062
1067
llvm.return
You can’t perform that action at this time.
0 commit comments