目录
llvm::Argument,llvm::BasicBlock,llvm::Constant,llvm::Instruction这些很重要的类都是它的子类。
llvm::Value有一个llvm::Type*成员和一个use list。后者可以跟踪有哪些其他Value使用了自己,我们可以使用下面的迭代器对它进行访问:
- unsigned use_size() 返回有多少Value使用它
- bool use_empty() 是否没有Value使用它
- use_iterator use_begin() 返回use list的迭代器头
- use_iterator use_end() 返回尾
- User *use_back() 返回use list的最后一个元素
int main() { Value* val1 = ConstantFP::get(theContext, APFloat(3.2)); if (val1->use_empty()) { std::cout << "no one use it\n"; } system("pause"); return 0; }llvm:Type
前者顾名思义表示一个类型。可以通过
Value::getType()获取到这个llvm::Type*,它有一些is*()成员函数可以判断是下面哪种类型:enum TypeID { // PrimitiveTypes - make sure LastPrimitiveTyID stays up to date. VoidTyID = 0, ///< 0: type with no size HalfTyID, ///< 1: 16-bit floating point type FloatTyID, ///< 2: 32-bit floating point type DoubleTyID, ///< 3: 64-bit floating point type X86_FP80TyID, ///< 4: 80-bit floating point type (X87) FP128TyID, ///< 5: 128-bit floating point type (112-bit mantissa) PPC_FP128TyID, ///< 6: 128-bit floating point type (two 64-bits, PowerPC) LabelTyID, ///< 7: Labels MetadataTyID, ///< 8: Metadata X86_MMXTyID, ///< 9: MMX vectors (64 bits, X86 specific) TokenTyID, ///< 10: Tokens // Derived types... see DerivedTypes.h file. // Make sure FirstDerivedTyID stays up to date! IntegerTyID, ///< 11: Arbitrary bit width integers FunctionTyID, ///< 12: Functions StructTyID, ///< 13: Structures ArrayTyID, ///< 14: Arrays PointerTyID, ///< 15: Pointers VectorTyID ///< 16: SIMD 'packed' format, or other vector type };比如这样:
int main() { Value* val1 = ConstantFP::get(theContext, APFloat(3.2)); Type* t = val1->getType(); if (t->isDoubleTy()) { std::cout <<关键字:
青岛软件培训
可能你正在寻找一家靠谱的IT培训机构,
渴望突破职业瓶颈,
找一份得体的工作。
恰巧万码学堂正在寻找像你这样不甘平凡的追光者!
我们拒绝纸上谈兵,直接参与真实开发流程!
现在行动,未来可期
立即拨打0532-85025005,预约免费职业规划咨询
前20名咨询者赠送《2025高薪技术岗位白皮书》!
你不是在报名课程,而是在投资五年后的自己!
