llvm-project/llvm/lib/IR
Nikita Popov 3c9f3f76f1 [ConstantFold] Fold zero-index GEPs with opaque pointers
With opaque pointers, we can eliminate zero-index GEPs even if
they have multiple indices, as this no longer impacts the result
type of the GEP.

This optimization is already done for instructions in InstSimplify,
but we were missing the corresponding constant expression handling.

The constexpr transform is a bit more powerful, because it can
produce a vector splat constant and also handles undef values --
it is an extension of an existing single-index transform.
2022-04-04 13:04:27 +02:00
..
AbstractCallSite.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
AsmWriter.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
Assumptions.cpp [Attributor][OpenMP] Add assumption for non-call assembly instructions 2022-03-28 20:57:52 -05:00
AttributeImpl.h Extend the `uwtable` attribute with unwind table kind 2022-02-14 14:35:02 +00:00
Attributes.cpp [InstCombineCalls] Optimize call of bitcast even w/ parameter attributes 2022-03-28 20:57:52 -05:00
AutoUpgrade.cpp [AutoUpgrade] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds 2022-03-30 13:31:18 -07:00
BasicBlock.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
BuiltinGCs.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
CMakeLists.txt [VP] Introducing VectorBuilder, the VP intrinsic builder 2022-03-07 10:02:07 +01:00
Comdat.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
ConstantFold.cpp [ConstantFold] Fold zero-index GEPs with opaque pointers 2022-04-04 13:04:27 +02:00
ConstantFold.h [ConstantFolding] Use ICmpInst::Predicate instead of plain integer 2021-12-30 14:31:44 +07:00
ConstantRange.cpp [ConstantRange] Add exact union/intersect (NFC) 2021-11-07 21:46:06 +01:00
Constants.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
ConstantsContext.h [IR] Added operator delete to subclasses of User to avoid UB 2021-07-08 11:59:22 +02:00
Core.cpp [llvm-c] Document that LLVMGetElementType on pointers is deprecated (NFC) 2022-03-11 09:28:18 +01:00
DIBuilder.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
DataLayout.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DebugInfo.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DebugInfoMetadata.cpp [SampleFDO] Allow multiple of --enable-fs-discrimintor option [NFC] 2022-03-08 11:31:20 -08:00
DebugLoc.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DiagnosticHandler.cpp [llvm] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine) 2021-10-06 12:04:30 +01:00
DiagnosticInfo.cpp Revert "[misexpect] Re-implement MisExpect Diagnostics" 2022-03-31 14:54:41 -07:00
DiagnosticPrinter.cpp [IR] Fix a few incorrect paths in file header comments. NFC 2021-10-15 09:18:57 -07:00
Dominators.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
FPEnv.cpp Mapping of FP operations to constrained intrinsics 2022-03-31 11:07:47 +07:00
Function.cpp [IR] Require intrinsic struct return type to be anonymous 2022-03-30 09:51:24 +02:00
GCStrategy.cpp [GC][NFC] Make getGCStrategy by name available in IR 2021-08-02 14:26:04 +07:00
GVMaterializer.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
Globals.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
IRBuilder.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
IRPrintingPasses.cpp
InlineAsm.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Instruction.cpp [SCCP][IR] Landing pads are not safe to remove 2022-03-14 14:59:32 +01:00
Instructions.cpp CallBase: fix getFnAttr so it also checks the function 2022-04-03 23:19:23 -04:00
IntrinsicInst.cpp [VP] Add more cast VPintrinsic and docs. 2022-04-01 09:16:10 +08:00
LLVMContext.cpp Revert "[misexpect] Re-implement MisExpect Diagnostics" 2022-03-31 14:54:41 -07:00
LLVMContextImpl.cpp [LLVMContext] Respect default value of -opaque-pointers option (NFC) 2022-03-23 12:59:42 +01:00
LLVMContextImpl.h Destroy ValueNames after all unique_ptr<Value> 2022-03-31 21:22:07 -07:00
LLVMRemarkStreamer.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
LegacyPassManager.cpp [LegacyPassManager] Move structural hashing into Pass classes. NFC. 2022-03-17 09:51:12 +00:00
MDBuilder.cpp
Mangler.cpp [Mangler] Mangle aliases to fastcall/vectorcall functions correctly 2022-02-25 22:06:47 +00:00
Metadata.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
MetadataImpl.h
Module.cpp Apply clang-tidy fixes for readability-redundant-member-init in Module.cpp (NFC) 2022-03-28 09:18:27 -07:00
ModuleSummaryIndex.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Operator.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
OptBisect.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Pass.cpp [LegacyPassManager] Move structural hashing into Pass classes. NFC. 2022-03-17 09:51:12 +00:00
PassInstrumentation.cpp [NewPM] Handle passes with params in -print-before/-print-after 2021-07-09 09:27:37 +02:00
PassManager.cpp Revert "[PassManager] Add pretty stack entries before P->run() call." 2022-03-09 18:46:32 +00:00
PassRegistry.cpp
PassTimingInfo.cpp [LLVM][NFC]Inclusive language: remove occurances of sanity check/test from llvm 2021-11-24 17:29:55 -05:00
PrintPasses.cpp
ProfileSummary.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
PseudoProbe.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
ReplaceConstant.cpp [NFC] Remove unnecessary "#include"s from header files 2022-02-23 01:20:48 -08:00
SSAContext.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
SafepointIRVerifier.cpp [Safepoint Verifier] Add a missed comment to previous commit. 2022-02-15 12:21:33 +07:00
Statepoint.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
StructuralHash.cpp
SymbolTableListTraitsImpl.h
Type.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
TypeFinder.cpp [IR] Support ifuncs in opaque pointer mode 2022-01-27 13:01:33 +01:00
Use.cpp [IR] Remove unused forward declarations (NFC) 2022-04-03 12:54:54 -07:00
User.cpp [CSSPGO] Unblock optimizations with pseudo probe instrumentation part 3. 2021-10-12 09:44:12 -07:00
Value.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
ValueSymbolTable.cpp PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23 2021-07-08 13:37:57 -07:00
VectorBuilder.cpp [VP] Introducing VectorBuilder, the VP intrinsic builder 2022-03-07 10:02:07 +01:00
Verifier.cpp [VP] Add more cast VPintrinsic and docs. 2022-04-01 09:16:10 +08:00