6 #include <gtest/gtest.h>
11 #include <llvm/IR/Attributes.h>
12 #include <llvm/IR/LLVMContext.h>
14 TEST(AttributeConversionTests, TestAttributeKindConversion)
16 typedef llvm::Attribute::AttrKind ak;
18 for (
int attributeKind = ak::None; attributeKind != ak::EndAttrKinds; attributeKind++)
24 TEST(AttributeConversionTests, TestAttributeListConversion)
27 llvm::LLVMContext context;
28 llvm::AttrBuilder functionAttributeBuilder(context);
29 functionAttributeBuilder.addAttribute(llvm::Attribute::NoUnwind);
31 llvm::AttrBuilder returnAttributeBuilder(context);
32 returnAttributeBuilder.addAttribute(llvm::Attribute::NoReturn);
34 llvm::AttrBuilder parameter0AttributeBuilder(context);
35 parameter0AttributeBuilder.addAttribute(llvm::Attribute::ZExt);
37 llvm::AttrBuilder parameter1AttributeBuilder(context);
38 parameter1AttributeBuilder.addAttribute(llvm::Attribute::NoUndef);
40 auto llvmFunctionAttributes = llvm::AttributeSet::get(context, functionAttributeBuilder);
41 auto llvmReturnAttributes = llvm::AttributeSet::get(context, returnAttributeBuilder);
42 auto llvmParameter0Attributes = llvm::AttributeSet::get(context, parameter0AttributeBuilder);
43 auto llvmParameter1Attributes = llvm::AttributeSet::get(context, parameter1AttributeBuilder);
45 auto llvmAttributeList = llvm::AttributeList::get(
47 llvmFunctionAttributes,
49 { llvmParameter0Attributes, llvmParameter1Attributes });
56 auto jlmFunctionAttributes = jlmAttributeList.getFunctionAttributes();
57 EXPECT_EQ(jlmFunctionAttributes.numAttributes(), 1u);
59 *jlmFunctionAttributes.EnumAttributes().begin(),
62 auto jlmReturnAttributes = jlmAttributeList.getReturnAttributes();
63 EXPECT_EQ(jlmReturnAttributes.numAttributes(), 1u);
65 *jlmReturnAttributes.EnumAttributes().begin(),
68 EXPECT_EQ(jlmAttributeList.getParameterAttributes().size(), 2u);
69 auto jlmParameter0Attributes = jlmAttributeList.getParameterAttributes()[0];
70 auto jlmParameter1Attributes = jlmAttributeList.getParameterAttributes()[1];
72 EXPECT_EQ(jlmParameter0Attributes.numAttributes(), 1u);
74 *jlmParameter0Attributes.EnumAttributes().begin(),
77 EXPECT_EQ(jlmParameter1Attributes.numAttributes(), 1u);
79 *jlmParameter1Attributes.EnumAttributes().begin(),
TEST(AttributeConversionTests, TestAttributeKindConversion)
Attribute::kind ConvertAttributeKind(const ::llvm::Attribute::AttrKind &kind)
AttributeList convertAttributeList(const ::llvm::AttributeList &attributeList, const size_t numParameters, TypeConverter &typeConverter)