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.