[Orc] Fix sret/byval attributes in test (NFC)
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 20 Jul 2021 18:45:18 +0000 (20:45 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 20 Jul 2021 18:47:15 +0000 (20:47 +0200)
This was placing sret/byval attributes without type argument on
non-pointer arguments. Make this valid IR by using pointer
arguments and passing the corresponding attribute type argument.

llvm/unittests/ExecutionEngine/Orc/IndirectionUtilsTest.cpp

index e9d39ef..860fc2f 100644 (file)
@@ -18,17 +18,17 @@ namespace {
 TEST(IndirectionUtilsTest, MakeStub) {
   LLVMContext Context;
   ModuleBuilder MB(Context, "x86_64-apple-macosx10.10", "");
+  StructType *ArgTy = getDummyStructTy(Context);
+  Type *ArgPtrTy = PointerType::getUnqual(ArgTy);
   FunctionType *FTy = FunctionType::get(
-      Type::getVoidTy(Context),
-      {getDummyStructTy(Context), getDummyStructTy(Context)}, false);
+      Type::getVoidTy(Context), {ArgPtrTy, ArgPtrTy}, false);
   Function *F = MB.createFunctionDecl(FTy, "");
   AttributeSet FnAttrs = AttributeSet::get(
       Context, AttrBuilder().addAttribute(Attribute::NoUnwind));
   AttributeSet RetAttrs; // None
   AttributeSet ArgAttrs[2] = {
-      AttributeSet::get(Context,
-                        AttrBuilder().addAttribute(Attribute::StructRet)),
-      AttributeSet::get(Context, AttrBuilder().addAttribute(Attribute::ByVal)),
+      AttributeSet::get(Context, AttrBuilder().addStructRetAttr(ArgTy)),
+      AttributeSet::get(Context, AttrBuilder().addByValAttr(ArgTy)),
   };
   F->setAttributes(AttributeList::get(Context, FnAttrs, RetAttrs, ArgAttrs));