llvm-mirror/test/Transforms/GVN
Manoj Gupta 647946fa14 llvm: Add support for "-fno-delete-null-pointer-checks"
Summary:
Support for this option is needed for building Linux kernel.
This is a very frequently requested feature by kernel developers.

More details : https://lkml.org/lkml/2018/4/4/601

GCC option description for -fdelete-null-pointer-checks:
This Assume that programs cannot safely dereference null pointers,
and that no code or data element resides at address zero.

-fno-delete-null-pointer-checks is the inverse of this implying that
null pointer dereferencing is not undefined.

This feature is implemented in LLVM IR in this CL as the function attribute
"null-pointer-is-valid"="true" in IR (Under review at D47894).
The CL updates several passes that assumed null pointer dereferencing is
undefined to not optimize when the "null-pointer-is-valid"="true"
attribute is present.

Reviewers: t.p.northover, efriedma, jyknight, chandlerc, rnk, srhines, void, george.burgess.iv

Reviewed By: efriedma, george.burgess.iv

Subscribers: eraman, haicheng, george.burgess.iv, drinkcat, theraven, reames, sanjoy, xbolva00, llvm-commits

Differential Revision: https://reviews.llvm.org/D47895

llvm-svn: 336613
2018-07-09 22:27:23 +00:00
..
PRE llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
2007-07-25-DominatedLoop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-25-InfiniteLoop.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2007-07-25-Loop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-25-NestedLoop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-25-SinglePredecessor.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-26-InterlockingLoops.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2007-07-26-NonRedundant.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-26-PhiErasure.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2007-07-30-PredIDom.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-07-31-NoDomInherit.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2007-07-31-RedundantPhi.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2008-02-12-UndefLoad.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2008-02-13-NewPHI.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-07-02-Unreachable.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2008-12-09-SelfRemove.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
2008-12-12-RLE-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-12-14-rle-reanalyze.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2008-12-15-CacheVisited.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-01-21-SortInvalidation.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-01-22-SortInvalidation.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-03-10-PREOnVoid.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2009-07-13-MemDepSortFail.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-11-12-MemDepMallocBitCast.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2010-03-31-RedundantPHIs.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2010-05-08-OneBit.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2010-11-13-Simplify.ll
2011-04-27-phioperands.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2011-07-07-MatchIntrinsicExtract.ll
2011-09-07-TypeIdFor.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2012-05-22-PreCrash.ll
2016-08-30-MaskedScatterGather.ll Support arbitrary address space pointers in masked gather/scatter intrinsics. 2017-05-03 12:28:54 +00:00
assume-equal.ll [Devirtualization] MemDep returns non-local !invariant.group dependencies 2017-01-12 11:33:58 +00:00
basic-undef-test.ll Update BasicAliasAnalysis to understand that nothing aliases with undef values. 2015-05-05 18:10:49 +00:00
basic.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
big-endian.ll Do not widen load for different variable in GVN. 2016-09-09 18:42:35 +00:00
bitcast-of-call.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
br-identical.ll GVN: If a branch has two identical successors, we cannot declare either dead. 2015-06-25 18:32:02 +00:00
calloc-load-removal.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
calls-nonlocal.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
calls-readonly.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
commute.ll
cond_br2.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
cond_br.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
condprop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
crash-no-aa.ll [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
dbg-redundant-load.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
debugloc.ll Do not propagate DebugLoc across basic blocks 2017-01-31 20:57:13 +00:00
edge.ll only propagate equality comparisons of FP values that we are certain are non-zero 2015-02-25 22:46:08 +00:00
fence.ll [Debugify] Move debug value intrinsics closer to their operand defs 2018-06-06 19:05:42 +00:00
flags.ll [GVN] Respect fast-math-flags on fcmps 2016-04-22 06:37:51 +00:00
fold-const-expr.ll Fix some DOS-style line endings that I suspect snuck in from one of the 2016-12-23 02:02:26 +00:00
fpmath.ll
funclet.ll [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
invariant.group.ll Implement strip.invariant.group 2018-07-02 04:49:30 +00:00
invariant.start.ll [AliasAnalysis] Treat invariant.start as read-memory 2016-08-09 17:18:05 +00:00
lifetime-simple.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
load-constant-mem.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
load-from-unreachable-predecessor.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
malloc-load-removal.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
MemdepMiscompile.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
no_speculative_loads_with_asan.ll Hardware-assisted AddressSanitizer (llvm part). 2017-12-09 00:21:41 +00:00
noalias.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
non-integral-pointers.ll [GVN] Don't coerce non-integral pointers to integers or vice versa 2017-04-19 18:21:09 +00:00
non-local-offset.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
nonescaping-malloc.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
null-aliases-nothing.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
opt-remarks.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
phi-translate-partial-alias.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr10820.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr12979.ll [GVN] Intersect the IR flags when CSE'ing two instructions 2015-06-24 21:52:25 +00:00
pr14166.ll [InstSimplify] Cast folding can be made more generic 2016-07-26 17:58:05 +00:00
pr17732.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
pr17852.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr24397.ll [PHITransAddr] Don't assume that instruction operands are translatable 2015-08-09 15:43:02 +00:00
pr24426.ll Preserve CFG in MergedLoadStoreMotion. This fixes PR24426. 2015-10-18 19:34:10 +00:00
pr25440.ll Do not widen load for different variable in GVN. 2016-09-09 18:42:35 +00:00
pr28562.ll [IR] andIRFlags and copyIRFlags needs to handle GEP 2016-07-15 05:02:31 +00:00
pr28879.ll [GVN] Avoid casting a vector of size less than 8 bits to i8 2018-06-21 21:43:20 +00:00
pr32314.ll [BasicAA] Add test case that goes with r305481. 2017-06-15 17:27:56 +00:00
pr34908.ll [GVN] Don't replace constants with constants. 2017-10-11 04:21:51 +00:00
pr36063.ll Mark MergedLoadStoreMotion as not preserving MemDep results 2018-02-23 10:41:57 +00:00
pre-compare.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
pre-new-inst.ll GVN: tolerate an instruction being replaced without existing in the leaderboard 2015-07-14 21:03:18 +00:00
propagate-ir-flags.ll Fixed the lost FastMathFlags in GVN(Global Value Numbering). 2016-11-22 20:52:53 +00:00
range.ll [GVN] Make a test case more robust 2015-10-28 03:20:05 +00:00
readattrs.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
rle-must-alias.ll [GVN] Use FileCheck instead of grep for tests. 2016-07-17 23:21:26 +00:00
rle-no-phi-translate.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
rle-nonlocal.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
stale-loop-info.ll [GVN] When merging blocks update LoopInfo if it's available 2016-12-01 03:56:43 +00:00
tbaa.ll [Analysis] Generate more precise TBAA tags when one access encloses the other 2017-12-18 20:05:20 +00:00
unreachable_block_infinite_loop.ll [PHITransAddr] Don't translate unreachable values 2015-06-01 00:15:08 +00:00
volatile-nonvolatile.ll More detailed dependence test between volatile and non-volatile accesses 2016-02-22 23:07:43 +00:00