llvm-project/llvm/lib/Transforms/InstCombine
Chandler Carruth 2abb65ae11 [InstCombine] Factor the logic for propagating !nonnull and !range
metadata out of InstCombine and into helpers.

NFC, this just exposes the logic used by InstCombine when propagating
metadata from one load instruction to another. The plan is to use this
in SROA to address PR32902.

If anyone has better ideas about how to factor this or name variables,
I'm all ears, but this seemed like a pretty good start and lets us make
progress on the PR.

This is based on a patch by Ariel Ben-Yehuda (D34285).

llvm-svn: 306267
2017-06-26 03:31:31 +00:00
..
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
InstCombineAddSub.cpp [InstCombine] add (sext i1 X), 1 --> zext (not X) 2017-06-25 14:15:28 +00:00
InstCombineAndOrXor.cpp [InstCombine] Add one use checks to or/and->xnor folding 2017-06-22 16:12:02 +00:00
InstCombineCalls.cpp [InstCombine] Add range metadata to cttz/ctlz/ctpop intrinsic calls based on known bits 2017-06-21 16:32:35 +00:00
InstCombineCasts.cpp [InstCombine] reverse bitcast + bitwise-logic canonicalization (PR33138) 2017-06-22 15:46:54 +00:00
InstCombineCompares.cpp [Analysis][Transforms] Use commutable matchers instead of m_CombineOr in a few places. NFC 2017-06-24 06:24:01 +00:00
InstCombineInternal.h [InstCombine] Recognize and simplify three way comparison idioms 2017-06-23 13:41:45 +00:00
InstCombineLoadStoreAlloca.cpp [InstCombine] Factor the logic for propagating !nonnull and !range 2017-06-26 03:31:31 +00:00
InstCombineMulDivRem.cpp [InstCombine] Pass a proper context instruction to all of the calls into InstSimplify 2017-06-09 03:21:29 +00:00
InstCombinePHI.cpp [InstCombine] Pass a proper context instruction to all of the calls into InstSimplify 2017-06-09 03:21:29 +00:00
InstCombineSelect.cpp [InstCombine] Teach foldSelectICmpAndOr to recognize (select (icmp slt (trunc (X)), 0), Y, (or Y, C2)) 2017-06-22 16:23:30 +00:00
InstCombineShifts.cpp [ValueTracking][InstCombine] Use m_Shr instead m_CombineOr(m_LShr, m_AShr). NFC 2017-06-24 06:24:04 +00:00
InstCombineSimplifyDemanded.cpp [InstCombine][InstSimplify] Use APInt::isNullValue/isOneValue to reduce compiled code for comparing APInts with 0 and 1. NFC 2017-06-07 07:40:37 +00:00
InstCombineVectorOps.cpp [InstCombine] Pass a proper context instruction to all of the calls into InstSimplify 2017-06-09 03:21:29 +00:00
InstructionCombining.cpp [InstCombine] Make sure AddReachableCodeToWorklist sets MadeIRChange 2017-06-19 18:00:27 +00:00
LLVMBuild.txt