llvm-project/llvm/lib/IR
Nikita Popov f8aaec19e6 [OpaquePtr] Support forward references in textual IR
Currently, LLParser will create a Function/GlobalVariable forward
reference based on the desired pointer type and then modify it when
it is declared. With opaque pointers, we generally do not know the
correct type to use until we see the declaration.

Solve this by creating the forward reference with a dummy type, and
then performing a RAUW with the correct Function/GlobalVariable when
it is declared. The approach is adopted from
b5b55963f6.

This results in a change to the use list order, which is why we see
test changes on some module passes that are not stable under use list
reordering.

Differential Revision: https://reviews.llvm.org/D104950
2021-06-29 20:10:31 +02:00
..
AbstractCallSite.cpp
AsmWriter.cpp [OpaquePtr] Support forward references in textual IR 2021-06-29 20:10:31 +02:00
Assumptions.cpp [Clang][Attr] Introduce the `assume` function attribute 2020-12-15 16:51:34 -06:00
AttributeImpl.h Normalize interaction with boolean attributes 2021-04-17 08:17:33 +02:00
Attributes.cpp [IR] remove assert since always_inline can appear on CallBase 2021-06-28 13:53:57 -07:00
AutoUpgrade.cpp Intrinsic::getName: require a Module argument 2021-06-14 14:52:29 +02:00
BasicBlock.cpp [IR] Add BasicBlock::isEntryBlock() (NFC) 2021-05-15 12:41:58 +02:00
BuiltinGCs.cpp [GC][NFC] Move GCStrategy from CodeGen to IR 2021-05-13 12:31:59 +07:00
CMakeLists.txt [GC][NFC] Move GCStrategy from CodeGen to IR 2021-05-13 12:31:59 +07:00
Comdat.cpp
ConstantFold.cpp [ConstantFold] Allow propagation of poison for and/or i1 2021-06-24 02:03:09 +09:00
ConstantFold.h
ConstantRange.cpp [NFC][ConstantRange] Add 'icmp' helper method 2021-04-10 19:38:55 +03:00
Constants.cpp [Constants] Handle addrspacecast with opaque pointer type 2021-06-23 20:58:08 +02:00
ConstantsContext.h Support unwinding from inline assembly 2021-05-13 19:13:03 +01:00
Core.cpp Intrinsic::getName: require a Module argument 2021-06-14 14:52:29 +02:00
DIBuilder.cpp Add debug support for set types 2021-03-29 18:04:48 -07:00
DataLayout.cpp [StructLayout] Use TrailingObjects to allocate space for MemberOffsets. 2021-03-30 17:36:50 -07:00
DebugInfo.cpp Remove redundant comparisons (NFC) 2021-06-02 09:52:45 -07:00
DebugInfoMetadata.cpp [DebugInfo] Enforce implicit constraints on `distinct` MDNodes 2021-06-28 21:20:04 +00:00
DebugLoc.cpp [IR] Delete unused ReplaceLast in DebugLoc::appendInlineAt 2021-01-08 23:28:22 -08:00
DiagnosticHandler.cpp
DiagnosticInfo.cpp Improve the diagnostic of DiagnosticInfoResourceLimit (and warn-stack-size in particular) 2021-06-22 09:55:20 -07:00
DiagnosticPrinter.cpp
Dominators.cpp [gvn] Precisely propagate equalities to phi operands 2021-03-08 08:59:00 -08:00
FPEnv.cpp
Function.cpp [OpaquePtr] Mangle intrinsics with opaque pointers arguments 2021-06-23 10:52:13 -07:00
GCStrategy.cpp [GC][NFC] Move GCStrategy from CodeGen to IR 2021-05-13 12:31:59 +07:00
GVMaterializer.cpp
Globals.cpp [NFC] Use Aliasee to determine Type and AddrSpace in GlobalAlias::create() 2021-05-02 11:50:08 -07:00
IRBuilder.cpp [MemCpyOpt] Support opaque pointers 2021-06-27 15:52:38 +02:00
IRPrintingPasses.cpp [NewPM] Support --print-before/after in NPM 2020-12-03 16:52:14 -08:00
InlineAsm.cpp Support unwinding from inline assembly 2021-05-13 19:13:03 +01:00
Instruction.cpp [InstCombine] Relax constraints of uses for exp(X) * exp(Y) -> exp(X + Y) 2021-06-01 08:33:23 -04:00
Instructions.cpp IR: Fix use-list-order round-tripping for br 2021-06-28 12:53:36 -07:00
IntrinsicInst.cpp Partial Reapply "[DebugInfo] Use variadic debug values to salvage BinOps and GEP instrs with non-const operands" 2021-06-24 09:46:38 +01:00
LLVMContext.cpp [ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of 2021-03-04 11:22:30 -08:00
LLVMContextImpl.cpp [DebugInfo] Enforce implicit constraints on `distinct` MDNodes 2021-06-28 21:20:04 +00:00
LLVMContextImpl.h [DebugInfo] Enforce implicit constraints on `distinct` MDNodes 2021-06-28 21:20:04 +00:00
LLVMRemarkStreamer.cpp [SystemZ][z/OS][Windows] Add new OF_TextWithCRLF flag and use this flag instead of OF_Text 2021-04-06 07:23:31 -04:00
LegacyPassManager.cpp [opt] Error if -debug-pass is specified alongside the new PM 2021-03-02 15:59:28 -08:00
MDBuilder.cpp [CSSPGO] Pseudo probe encoding and emission. 2020-12-10 17:29:28 -08:00
Mangler.cpp [IR] Use range-based for loops (NFC) 2021-02-27 10:09:25 -08:00
Metadata.cpp [DebugInfo] Enforce implicit constraints on `distinct` MDNodes 2021-06-28 21:20:04 +00:00
MetadataImpl.h
Module.cpp [IR] convert warn-stack-size from module flag to fn attr 2021-06-21 15:09:25 -07:00
ModuleSummaryIndex.cpp [IR] Use range-based for loops (NFC) 2021-03-01 23:40:33 -08:00
Operator.cpp Partial Reapply "[DebugInfo] Use variadic debug values to salvage BinOps and GEP instrs with non-const operands" 2021-06-24 09:46:38 +01:00
OptBisect.cpp Revert "Delay initialization of OptBisect" 2021-06-18 13:16:45 -05:00
Pass.cpp [PM] Avoid duplicates in the Used/Preserved/Required sets 2021-01-20 13:55:18 +01:00
PassInstrumentation.cpp [NewPM] Don't error when there's an unrecognized pass name 2021-01-07 22:33:32 -08:00
PassManager.cpp [NewPM] Make pass adaptors less templatey 2020-12-04 08:30:50 -08:00
PassRegistry.cpp [Analysis, IR] Use *Map::lookup (NFC) 2020-12-29 19:23:24 -08:00
PassTimingInfo.cpp [Time-report] Add a flag -ftime-report={per-pass,per-pass-run} to control the pass timing aggregation 2020-12-08 10:13:19 -08:00
PrintPasses.cpp [IR] Use llvm::is_contained (NFC) 2020-12-08 19:06:37 -08:00
ProfileSummary.cpp
PseudoProbe.cpp [CSSPGO] Undoing the concept of dangling pseudo probe 2021-06-18 15:14:11 -07:00
ReplaceConstant.cpp [IR] Simplify createReplacementInstr 2021-06-23 10:47:43 +01:00
SafepointIRVerifier.cpp [llvm] Use append_range (NFC) 2021-01-27 23:25:41 -08:00
Statepoint.cpp
StructuralHash.cpp
SymbolTableListTraitsImpl.h
Type.cpp [IR] Add Type::isOpaquePointerTy() helper (NFC) 2021-06-25 20:56:59 +02:00
TypeFinder.cpp [IR] Make TypeFinder aware of DIArgList values 2021-05-28 17:09:45 +02:00
Use.cpp
User.cpp Use AssumeInst in a few more places [nfc] 2021-04-06 13:18:53 -07:00
Value.cpp [IR] Fix replaceUsesWithIf ponetial issue with constants 2021-06-28 15:55:55 -07:00
ValueSymbolTable.cpp Fix non-global-value-max-name-size not considered by LLParser 2021-05-27 04:20:03 +00:00
Verifier.cpp [Verifier] Support opaque pointers for global_ctors 2021-06-28 21:40:54 +02:00