LLVM: include/llvm/IR/Function.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#ifndef LLVM_IR_FUNCTION_H
18#define LLVM_IR_FUNCTION_H
19
36#include
37#include
38#include
39#include
40#include
41
42namespace llvm {
43
45typedef unsigned ID;
46}
47
54enum LibFunc : unsigned;
63
65public:
67
68
71
74
75private:
77
78
80
81
82 friend void BasicBlock::setParent(Function *);
83 unsigned NextBlockNum = 0;
84
85 unsigned BlockNumEpoch = 0;
86
87 mutable Argument *Arguments = nullptr;
88 size_t NumArgs;
89 std::unique_ptr
90 SymTab;
91 AttributeList AttributeSets;
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 enum {
107
108 IsMaterializableBit = 0,
109 };
110
112
113public:
114
115
116
117
121
122
123 void convertToNewDbgValues();
124
125
126 void convertFromNewDbgValues();
127
128private:
130
131 static constexpr LibFunc UnknownLibFunc = LibFunc(-1);
132
133
134
135
136 mutable LibFunc LibFuncCache = UnknownLibFunc;
137
138 void CheckLazyArguments() const {
140 BuildLazyArguments();
141 }
142
143 void BuildLazyArguments() const;
144
145 void clearArguments();
146
147 void deleteBodyImpl(bool ShouldDrop);
148
149
150
151
152
155
156public:
159 ~Function();
160
161
162
163
164 const Function &getFunction() const { return *this; }
165
167 unsigned AddrSpace, const Twine &N = "",
168 Module *M = nullptr) {
169 return new (AllocMarker) Function(Ty, Linkage, AddrSpace, N, M);
170 }
171
172
175 return new (AllocMarker)
176 Function(Ty, Linkage, static_cast<unsigned>(-1), N, M);
177 }
178
179
180
181
182
185
186
187
188
189
190
191
192
193
194
196 unsigned AddrSpace,
198 Module *M = nullptr);
199
200
202
203
204
205
207
208
212
213
215
216
217
219
220
221
222
223 const DataLayout &getDataLayout() const;
224
225
226
228
233 unsigned Mask = 1 << IsMaterializableBit;
235 (V ? Mask : 0u));
236 }
237
238
239
240
241
242
243
245
246
247
248
250
251
252
253
254 bool isTargetIntrinsic() const;
255
256
257
258
259 bool isConstrainedFPIntrinsic() const;
260
261
262
263
264
265 void updateAfterNameChange();
266
267
268
269
275 auto ID = static_cast<unsigned>(CC);
278 }
279
280
283 default:
284 return false;
288 return true;
289 }
290 }
291
293
294
295
296
298 private:
301
302 public:
304 : Count(Count), PCT(PCT) {}
308 };
309
310
311
312
313
314
315
318
319
320 void setEntryCount(uint64_t Count, ProfileCountType Type = PCT_Real,
322
323
324
325
326
327 std::optional getEntryCount(bool AllowSynthetic = false) const;
328
329
330
331
332
333
337
338
339
341
342
343
347 const std::string &getGC() const;
348 void setGC(std::string Str);
349 void clearGC();
350
351
352 AttributeList getAttributes() const { return AttributeSets; }
353
354
355 void setAttributes(AttributeList Attrs) { AttributeSets = Attrs; }
356
357
358
359 void addAttributeAtIndex(unsigned i, Attribute Attr);
360
361
363
364
366
367
369
370
371 void addFnAttrs(const AttrBuilder &Attrs);
372
373
375
376
378
379
380 void addRetAttrs(const AttrBuilder &Attrs);
381
382
384
385
386 void addParamAttr(unsigned ArgNo, Attribute Attr);
387
388
389 void addParamAttrs(unsigned ArgNo, const AttrBuilder &Attrs);
390
391
393
394
395 void removeAttributeAtIndex(unsigned i, StringRef Kind);
396
397
399
400
401 void removeFnAttr(StringRef Kind);
402
404
405
407
408
409 void removeRetAttr(StringRef Kind);
410
411
413
414
416
417
418 void removeParamAttr(unsigned ArgNo, StringRef Kind);
419
420
421 void removeParamAttrs(unsigned ArgNo, const AttributeMask &Attrs);
422
423
425
426
427 bool hasFnAttribute(StringRef Kind) const;
428
429
431
432
434
435
436 bool hasParamAttribute(unsigned ArgNo, StringRef Kind) const;
437
438
440
441
443
444
446
447
449
450
452
453
455
456
457
458
459
460
461
464
465
467
468
470 return AttributeSets.getFnStackAlignment();
471 }
472
473
474 bool hasStackProtectorFnAttr() const;
475
476
477
478 void addDereferenceableParamAttr(unsigned ArgNo, uint64_t Bytes);
479
480
481
482 void addDereferenceableOrNullParamAttr(unsigned ArgNo, uint64_t Bytes);
483
484
486
488 return AttributeSets.getParamAlignment(ArgNo);
489 }
490
492 return AttributeSets.getParamStackAlignment(ArgNo);
493 }
494
495
497 return AttributeSets.getParamByValType(ArgNo);
498 }
499
500
502 return AttributeSets.getParamStructRetType(ArgNo);
503 }
504
505
507 return AttributeSets.getParamInAllocaType(ArgNo);
508 }
509
510
512 return AttributeSets.getParamByRefType(ArgNo);
513 }
514
515
517 return AttributeSets.getParamPreallocatedType(ArgNo);
518 }
519
520
521
523 return AttributeSets.getParamDereferenceableBytes(ArgNo);
524 }
525
526
527
528
530 return AttributeSets.getParamDereferenceableOrNullBytes(ArgNo);
531 }
532
533
535 return AttributeSets.getParamNoFPClass(ArgNo);
536 }
537
538
544
546 return hasFnAttribute(Attribute::CoroDestroyOnlyWhenComplete);
547 }
549 addFnAttr(Attribute::CoroDestroyOnlyWhenComplete);
550 }
551
554
555
556 bool doesNotAccessMemory() const;
558
559
560 bool onlyReadsMemory() const;
562
563
564 bool onlyWritesMemory() const;
566
567
568
569 bool onlyAccessesArgMemory() const;
571
572
573
574 bool onlyAccessesInaccessibleMemory() const;
576
577
578
579 bool onlyAccessesInaccessibleMemOrArgMem() const;
581
582
589
590
592
593
600
601
608
609
619
620
625 addFnAttr(Attribute::Speculatable);
626 }
627
628
635
636
643
644
645
652
653
659
660
663
664
666 return AttributeSets.getUWTableKind();
667 }
668
669
670
680
684
685
686
688 return AttributeSets.hasParamAttr(0, Attribute::StructRet) ||
689 AttributeSets.hasParamAttr(1, Attribute::StructRet);
690 }
691
692
693
695 return AttributeSets.hasRetAttr(Attribute::NoAlias);
696 }
698
699
701
702
704
705
709
710
711
713
714
715
717
718
719
720
722
723
724
725 void copyAttributesFrom(const Function *Src);
726
727
728
729
731 deleteBodyImpl(false);
733 }
734
735
736
737
738 void removeFromParent();
739
740
741
742
743 void eraseFromParent();
744
745
746
747
748
749 void stealArgumentListFrom(Function &Src);
750
751
752
757
758
762
763
764
767 auto FromItNext = std::next(FromIt);
768
769 if (ToIt == FromIt || ToIt == FromItNext)
770 return;
771 splice(ToIt, FromF, FromIt, FromItNext);
772 }
773
774
775
779
780
781
783
784private:
785
788 template <class BB_t, class BB_i_t, class BI_t, class II_t>
792
793
794
795
796
797
798
801
803 return &Function::BasicBlocks;
804 }
805
806public:
809
810
811
812
813
814
817 return SymTab.get();
818 }
819
820
821
822
823
824
825
827
828
829
830
831 void renumberBlocks();
832
833
834
835
836
837
838
839
841
842private:
843
844
845 void validateBlockNumbers() const;
846
847public:
848
849
850
855
856 size_t size() const { return BasicBlocks.size(); }
857 bool empty() const { return BasicBlocks.empty(); }
862
863
864
865
867 CheckLazyArguments();
868 return Arguments;
869 }
871 CheckLazyArguments();
872 return Arguments;
873 }
874
876 CheckLazyArguments();
877 return Arguments + NumArgs;
878 }
880 CheckLazyArguments();
881 return Arguments + NumArgs;
882 }
883
885 assert (i < NumArgs && "getArg() out of range!");
886 CheckLazyArguments();
887 return Arguments + i;
888 }
889
896
897
898
899 size_t arg_size() const { return NumArgs; }
901
902
906
907
908 Constant *getPersonalityFn() const;
909 void setPersonalityFn(Constant *Fn);
910
911
915
916
917 Constant *getPrefixData() const;
918 void setPrefixData(Constant *PrefixData);
919
920
924
925
926 Constant *getPrologueData() const;
927 void setPrologueData(Constant *PrologueData);
928
929
930
932 bool ShouldPreserveUseListOrder = false,
933 bool IsForDebug = false) const;
934
935
936
937
938
939
940
942
943
944
945 void viewCFG(const char *OutputFileName) const;
946
947
950 const char *OutputFileName = nullptr) const;
951
952
953
954
955
956
957 void viewCFGOnly() const;
958
959
960
961 void viewCFGOnly(const char *OutputFileName) const;
962
963
966
967
969 return V->getValueID() == Value::FunctionVal;
970 }
971
972
973
974
975
976
977
978
979
980
981
982
983
985 deleteBodyImpl(true);
986 }
987
988
989
990
991
992
993
994
995 bool hasAddressTaken(const User ** = nullptr, bool IgnoreCallbackUses = false,
996 bool IgnoreAssumeLikeCalls = true,
997 bool IngoreLLVMUsed = false,
998 bool IgnoreARCAttachedCall = false,
999 bool IgnoreCastedDirectCall = false) const;
1000
1001
1002
1003
1004
1005 bool isDefTriviallyDead() const;
1006
1007
1008
1009 bool callsFunctionThatReturnsTwice() const;
1010
1011
1012
1013
1015
1016
1017
1018
1019
1021
1022
1023 bool shouldEmitDebugInfoForProfiling() const;
1024
1025
1026
1027
1028
1029 bool nullPointerIsDefined() const;
1030
1031
1032
1033
1034
1036
1037
1039
1040
1041
1042
1043
1045
1046
1047
1048 unsigned getVScaleValue() const;
1049
1050private:
1051 void allocHungoffUselist();
1052 template void setHungoffOperand(Constant *C);
1053
1054
1055
1056 void setValueSubclassData(unsigned short D) {
1058 }
1059 void setValueSubclassDataBit(unsigned Bit, bool On);
1060};
1061
1063
1064
1065
1067}
1068
1069
1070
1071
1072
1073
1075
1077
1079
1080}
1081
1082#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
This file contains the simple types necessary to represent the attributes associated with functions a...
static bool setDoesNotAccessMemory(Function &F)
static bool setMemoryEffects(Function &F, MemoryEffects ME)
static bool setOnlyAccessesInaccessibleMemOrArgMem(Function &F)
static bool setOnlyAccessesInaccessibleMemory(Function &F)
static bool setOnlyAccessesArgMemory(Function &F)
static bool setOnlyWritesMemory(Function &F)
static bool setOnlyReadsMemory(Function &F)
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static void viewCFG(Function &F, const BlockFrequencyInfo *BFI, const BranchProbabilityInfo *BPI, uint64_t MaxFreq, bool CFGOnly=false)
SmallVector< BasicBlock *, 8 > BasicBlockListType
static DISubprogram * getSubprogram(bool IsDistinct, Ts &&...Args)
This file defines the DenseSet and SmallDenseSet classes.
II addRangeRetAttr(Range)
#define DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CLASS, VALUECLASS)
Macro for generating out-of-class operand accessor definitions.
static Type * getValueType(Value *V)
Returns the type of the given value/instruction V.
This class represents an incoming formal argument to a Function.
This class stores enough information to efficiently remove some attributes from an existing AttrBuild...
Functions, function parameters, and return types can have attributes to indicate how they should be t...
static LLVM_ABI Attribute getWithUWTableKind(LLVMContext &Context, UWTableKind Kind)
AttrKind
This enumeration lists the attributes that can be associated with parameters, function results,...
LLVM Basic Block Representation.
const Instruction & back() const
friend void Instruction::removeFromParent()
friend BasicBlock::iterator Instruction::eraseFromParent()
const Instruction & front() const
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequen...
Analysis providing branch probability information.
This class represents a range of values.
This is an important base class in LLVM.
Subprogram description. Uses SubclassData1.
A parsed version of the target data layout string in and methods for querying it.
Implements a dense probed hash-table based set.
Class to represent function types.
uint64_t getCount() const
Definition Function.h:305
ProfileCount(uint64_t Count, ProfileCountType PCT)
Definition Function.h:303
bool isSynthetic() const
Definition Function.h:307
ProfileCountType getType() const
Definition Function.h:306
void deleteBody()
deleteBody - This method deletes the body of the function, and converts the linkage to external.
Definition Function.h:730
void addFnAttr(Attribute::AttrKind Kind)
Add function attributes to this function.
const ValueSymbolTable * getValueSymbolTable() const
Definition Function.h:816
bool isConvergent() const
Determine if the call is convergent.
Definition Function.h:610
void setCoroDestroyOnlyWhenComplete()
Definition Function.h:548
static Function * Create(FunctionType *Ty, LinkageTypes Linkage, unsigned AddrSpace, const Twine &N="", Module *M=nullptr)
Definition Function.h:166
BasicBlock & getEntryBlock()
Definition Function.h:808
SymbolTableList< BasicBlock > BasicBlockListType
Definition Function.h:66
void setAlignment(MaybeAlign Align)
Sets the alignment attribute of the Function.
Definition Function.h:1044
void splice(Function::iterator ToIt, Function *FromF)
Transfer all blocks from FromF to this function at ToIt.
Definition Function.h:759
const BasicBlock & getEntryBlock() const
Definition Function.h:807
BasicBlockListType::iterator iterator
Definition Function.h:69
bool hasOptSize() const
Optimize this function for size (-Os) or minimum size (-Oz).
Definition Function.h:706
Argument * arg_iterator
Definition Function.h:72
void splice(Function::iterator ToIt, Function *FromF, Function::iterator FromIt)
Transfer one BasicBlock from FromF at FromIt to this function at ToIt.
Definition Function.h:765
bool empty() const
Definition Function.h:857
FunctionType * getFunctionType() const
Returns the FunctionType for me.
Definition Function.h:209
bool isMaterializable() const
Definition Function.h:229
MaybeAlign getAlign() const
Returns the alignment of the given function.
Definition Function.h:1035
MaybeAlign getFnStackAlign() const
Return the stack alignment for the function.
Definition Function.h:469
iterator_range< const_arg_iterator > args() const
Definition Function.h:893
bool arg_empty() const
Definition Function.h:900
static bool classof(const Value *V)
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition Function.h:968
const BasicBlock & front() const
Definition Function.h:858
const_arg_iterator arg_end() const
Definition Function.h:879
const_arg_iterator arg_begin() const
Definition Function.h:870
bool mustProgress() const
Determine if the function is required to make forward progress.
Definition Function.h:654
bool returnDoesNotAlias() const
Determine if the parameter or return value is marked with NoAlias attribute.
Definition Function.h:694
bool cannotDuplicate() const
Determine if the call cannot be duplicated.
Definition Function.h:602
ProfileCountType
Definition Function.h:292
@ PCT_Synthetic
Definition Function.h:292
@ PCT_Real
Definition Function.h:292
const BasicBlock & back() const
Definition Function.h:860
unsigned getMaxBlockNumber() const
Return a value larger than the largest block number.
Definition Function.h:826
void setWillReturn()
Definition Function.h:662
bool willReturn() const
Determine if the function will return.
Definition Function.h:661
iterator_range< arg_iterator > args()
Definition Function.h:890
Intrinsic::ID getIntrinsicID() const LLVM_READONLY
getIntrinsicID - This method returns the ID number of the specified function, or Intrinsic::not_intri...
Definition Function.h:244
friend class TargetLibraryInfoImpl
Definition Function.h:129
bool doesNotRecurse() const
Determine if the function is known not to recurse, directly or indirectly.
Definition Function.h:646
bool hasMinSize() const
Optimize this function for minimum size (-Oz).
Definition Function.h:703
void setDoesNotReturn()
Definition Function.h:586
bool doesNoCfCheck() const
Determine if the function should not perform indirect branch tracking.
Definition Function.h:591
void setIsMaterializable(bool V)
Definition Function.h:232
uint64_t getParamDereferenceableBytes(unsigned ArgNo) const
Extract the number of dereferenceable bytes for a parameter.
Definition Function.h:522
bool isSpeculatable() const
Determine if the call has sideeffects.
Definition Function.h:621
bool hasGC() const
hasGC/getGC/setGC/clearGC - The name of the garbage collection algorithm to use during code generatio...
Definition Function.h:344
CallingConv::ID getCallingConv() const
getCallingConv()/setCallingConv(CC) - These method get and set the calling convention of this functio...
Definition Function.h:270
Type * getParamByValType(unsigned ArgNo) const
Extract the byval type for a parameter.
Definition Function.h:496
FPClassTest getParamNoFPClass(unsigned ArgNo) const
Extract the nofpclass attribute for a parameter.
Definition Function.h:534
bool hasPrefixData() const
Check whether this function has prefix data.
Definition Function.h:912
void setReturnDoesNotAlias()
Definition Function.h:697
bool hasPersonalityFn() const
Check whether this function has a personality function.
Definition Function.h:903
void addRetAttr(Attribute::AttrKind Kind)
Add return value attributes to this function.
static Function * Create(FunctionType *Ty, LinkageTypes Linkage, const Twine &N="", Module *M=nullptr)
Definition Function.h:173
AttributeList getAttributes() const
Return the attribute list for this Function.
Definition Function.h:352
void dropAllReferences()
dropAllReferences() - This method causes all the subinstructions to "letgo" of all references that th...
Definition Function.h:984
unsigned getBlockNumberEpoch() const
Return the "epoch" of current block numbers.
Definition Function.h:840
void setUWTableKind(UWTableKind K)
Definition Function.h:674
BasicBlockListType::const_iterator const_iterator
Definition Function.h:70
UWTableKind getUWTableKind() const
Get what kind of unwind table entry to generate for this function.
Definition Function.h:665
Type * getParamByRefType(unsigned ArgNo) const
Extract the byref type for a parameter.
Definition Function.h:511
bool hasNoSync() const
Determine if the call can synchroize with other threads.
Definition Function.h:637
bool doesNotThrow() const
Determine if the function cannot unwind.
Definition Function.h:594
arg_iterator arg_end()
Definition Function.h:875
const Function & getFunction() const
Definition Function.h:164
iterator begin()
Definition Function.h:851
const_iterator end() const
Definition Function.h:854
uint64_t getParamDereferenceableOrNullBytes(unsigned ArgNo) const
Extract the number of dereferenceable_or_null bytes for a parameter.
Definition Function.h:529
void removeFnAttr(Attribute::AttrKind Kind)
Remove function attributes from this function.
arg_iterator arg_begin()
Definition Function.h:866
bool isIntrinsic() const
isIntrinsic - Returns true if the function's name starts with "llvm.".
Definition Function.h:249
bool hasProfileData(bool IncludeSynthetic=false) const
Return true if the function is annotated with profile data.
Definition Function.h:334
const_iterator begin() const
Definition Function.h:852
void setConvergent()
Definition Function.h:613
void setPresplitCoroutine()
Definition Function.h:542
size_t size() const
Definition Function.h:856
void setAlignment(Align Align)
Sets the alignment attribute of the Function.
Definition Function.h:1038
MaybeAlign getParamAlign(unsigned ArgNo) const
Definition Function.h:487
void setSpeculatable()
Definition Function.h:624
ValueSymbolTable * getValueSymbolTable()
getSymbolTable() - Return the symbol table if any, otherwise nullptr.
Definition Function.h:815
bool hasOptNone() const
Do not optimize this function (-O0).
Definition Function.h:700
void setCannotDuplicate()
Definition Function.h:605
Type * getParamPreallocatedType(unsigned ArgNo) const
Extract the preallocated type for a parameter.
Definition Function.h:516
void setAttributes(AttributeList Attrs)
Set the attribute list for this Function.
Definition Function.h:355
bool isPresplitCoroutine() const
Determine if the function is presplit coroutine.
Definition Function.h:539
LLVMContext & getContext() const
getContext - Return a reference to the LLVMContext associated with this function.
BasicBlock & back()
Definition Function.h:861
bool hasKernelCallingConv() const
Does it have a kernel calling convention?
Definition Function.h:281
bool hasStructRetAttr() const
Determine if the function returns a structure through first or second pointer argument.
Definition Function.h:687
Function::iterator insert(Function::iterator Position, BasicBlock *BB)
Insert BB in the basic block list at Position.
Definition Function.h:753
void setNotConvergent()
Definition Function.h:616
bool doesNotFreeMemory() const
Determine if the call might deallocate memory.
Definition Function.h:629
Type * getParamInAllocaType(unsigned ArgNo) const
Extract the inalloca type for a parameter.
Definition Function.h:506
bool doesNotReturn() const
Determine if the function cannot return.
Definition Function.h:583
friend class InstIterator
Definition Function.h:789
BasicBlock & front()
Definition Function.h:859
bool isCoroOnlyDestroyWhenComplete() const
Definition Function.h:545
std::optional< ProfileCount > getEntryCount(bool AllowSynthetic=false) const
Get the entry count for this function.
void setSplittedCoroutine()
Definition Function.h:543
MaybeAlign getParamStackAlign(unsigned ArgNo) const
Definition Function.h:491
size_t arg_size() const
Definition Function.h:899
void setNoSync()
Definition Function.h:640
bool hasUWTable() const
True if the ABI mandates (or the user requested) that this function be in a unwind table.
Definition Function.h:671
void operator=(const Function &)=delete
Type * getReturnType() const
Returns the type of the ret val.
Definition Function.h:214
bool needsUnwindTableEntry() const
True if this function needs an unwind table.
Definition Function.h:681
bool hasLazyArguments() const
hasLazyArguments/CheckLazyArguments - The argument list of a function is built on demand,...
Definition Function.h:118
iterator end()
Definition Function.h:853
void setCallingConv(CallingConv::ID CC)
Definition Function.h:274
Function(const Function &)=delete
bool hasPrologueData() const
Check whether this function has prologue data.
Definition Function.h:921
const Argument * const_arg_iterator
Definition Function.h:73
Type * getParamStructRetType(unsigned ArgNo) const
Extract the sret type for a parameter.
Definition Function.h:501
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value)
void setDoesNotRecurse()
Definition Function.h:649
Argument * getArg(unsigned i) const
Definition Function.h:884
bool isVarArg() const
isVarArg - Return true if this function takes a variable number of arguments.
Definition Function.h:227
unsigned getInstructionCount() const
Returns the number of non-debug IR instructions in this function.
bool onlyReadsMemory() const
Determine if the function does not access or only reads memory.
void setMustProgress()
Definition Function.h:658
bool hasFnAttribute(Attribute::AttrKind Kind) const
Return true if the function has the attribute.
void setDoesNotFreeMemory()
Definition Function.h:632
void setDoesNotThrow()
Definition Function.h:597
MaybeAlign getAlign() const
Returns the alignment of the given variable or function.
LLVM_ABI void setAlignment(Align Align)
Sets the alignment attribute of the GlobalObject.
GlobalObject(Type *Ty, ValueTy VTy, AllocInfo AllocInfo, LinkageTypes Linkage, const Twine &Name, unsigned AddressSpace=0)
void setGlobalObjectSubClassData(unsigned Val)
unsigned getGlobalObjectSubClassData() const
Intrinsic::ID IntID
The intrinsic ID for this subclass (which must be a Function).
unsigned HasLLVMReservedName
True if the function's name starts with "llvm.".
void setLinkage(LinkageTypes LT)
LinkageTypes
An enumeration for the kinds of linkage for global values.
@ ExternalLinkage
Externally visible function.
This is an important class for using LLVM in a threaded context.
A Module instance is used to store all the information related to an LLVM module.
StringRef - Represent a constant reference to a string, i.e.
List that automatically updates parent links and symbol tables.
Implementation of the target library information.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
The instances of the Type class are immutable: once they are created, they are never changed.
This class provides a symbol table of name/value pairs.
LLVM Value Representation.
unsigned short getSubclassDataFromValue() const
void setValueSubclassData(unsigned short D)
An ilist node that can access its parent list.
typename base_list_type::iterator iterator
typename base_list_type::const_iterator const_iterator
A range adaptor for a pair of iterators.
This class implements an extremely fast bulk output stream that can only output to a stream.
This file defines the ilist_node class template, which is a convenient base class for creating classe...
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
CallingConv Namespace - This namespace contains an enum with a value for the well-known calling conve...
LLVM_ABI LLVM_READNONE bool supportsNonVoidReturnType(CallingConv::ID CC)
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ AMDGPU_KERNEL
Used for AMDGPU code object kernels.
@ MaxID
The highest possible ID. Must be some 2^k - 1.
@ SPIR_KERNEL
Used for SPIR kernel functions.
@ PTX_Kernel
Call to a PTX kernel. Passes all arguments in parameter space.
@ C
The default llvm calling convention, compatible with C.
This namespace contains an enum with a value for every intrinsic/builtin function known by LLVM.
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
MemoryEffectsBase< IRMemLocation > MemoryEffects
Summary of how a function affects memory in the program.
void erase(Container &C, ValueType V)
Wrapper function to remove a value from a container:
@ None
No unwind table requested.
FPClassTest
Floating-point class tests, supported by 'is_fpclass' intrinsic.
LLVM_ABI bool NullPointerIsDefined(const Function *F, unsigned AS=0)
Check whether null pointer dereferencing is considered undefined behavior for a given function or an ...
FunctionAddr VTableAddr Count
Function::ProfileCount ProfileCount
decltype(auto) cast(const From &Val)
cast - Return the argument parameter cast to the specified type.
@ Default
The result values are uniform if and only if all operands are uniform.
This struct is a compact representation of a valid (non-zero power of two) alignment.
Represent subnormal handling kind for floating point instruction inputs and outputs.
HungoffOperandTraits - determine the allocation regime of the Use array when it is not a prefix to th...
This struct is a compact representation of a valid (power of two) or undefined (0) alignment.
Compile-time customization of User operands.
Indicates this User has operands "hung off" in another allocation.