llvm-project/llvm/test/Transforms/GlobalOpt
Dan Gohman 2c74fe977d Add an @llvm.sideeffect intrinsic
This patch implements Chandler's idea [0] for supporting languages that
require support for infinite loops with side effects, such as Rust, providing
part of a solution to bug 965 [1].

Specifically, it adds an `llvm.sideeffect()` intrinsic, which has no actual
effect, but which appears to optimization passes to have obscure side effects,
such that they don't optimize away loops containing it. It also teaches
several optimization passes to ignore this intrinsic, so that it doesn't
significantly impact optimization in most cases.

As discussed on llvm-dev [2], this patch is the first of two major parts.
The second part, to change LLVM's semantics to have defined behavior
on infinite loops by default, with a function attribute for opting into
potential-undefined-behavior, will be implemented and posted for review in
a separate patch.

[0] http://lists.llvm.org/pipermail/llvm-dev/2015-July/088103.html
[1] https://bugs.llvm.org/show_bug.cgi?id=965
[2] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118632.html

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

llvm-svn: 317729
2017-11-08 21:59:51 +00:00
..
2004-10-10-CastStoreOnce.ll
2005-06-15-LocalizeConstExprCrash.ll
2005-09-27-Crash.ll
2006-07-07-InlineAsmCrash.ll
2006-11-01-ShrinkGlobalPhiCrash.ll
2007-04-05-Crash.ll
2007-05-13-Crash.ll Make "@name =" mandatory for globals in .ll files. 2016-05-10 18:22:45 +00:00
2007-06-04-PackedStruct.ll
2007-11-09-GEP-GEP-Crash.ll
2008-01-03-Crash.ll
2008-01-13-OutOfRangeSROA.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-01-29-VolatileGlobal.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-04-26-SROA-Global-Align.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-07-17-addrspace.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-12-16-HeapSRACrash-2.ll
2008-12-16-HeapSRACrash.ll
2009-01-13-phi-user.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2009-02-15-BitcastAlias.ll
2009-02-15-ResolveAlias.ll
2009-03-05-dbg.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
2009-03-06-Anonymous.ll Make "@name =" mandatory for globals in .ll files. 2016-05-10 18:22:45 +00:00
2009-03-07-PromotePtrToBool.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2009-06-01-RecursivePHI.ll
2009-11-16-BrokenPerformHeapAllocSRoA.ll
2009-11-16-MallocSingleStoreToGlobalVar.ll
2010-02-25-MallocPromote.ll
2010-02-26-MallocSROA.ll
2010-10-19-WeakOdr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
2011-04-09-EmptyGlobalCtors.ll
2012-05-11-blockaddress.ll
GSROA-section.ll
MallocSROA-section.ll
SROA-section.ll
alias-resolve.ll
alias-used-address-space.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
alias-used-section.ll
alias-used.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
array-elem-refs.ll
assume.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
atexit.ll
atomic.ll
available_externally_global_ctors.ll
basictest.ll PM: Port GlobalOpt to the new pass manager 2016-04-26 00:28:01 +00:00
blockaddress.ll
cleanup-pointer-root-users.ll
compiler-used.ll
constantexpr-dangle.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
constantfold-initializers.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
crash-2.ll
crash.ll
ctor-list-opt-constexpr.ll
ctor-list-opt-inbounds.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
ctor-list-opt.ll
cxx-dtor.ll
deaddeclaration.ll [GlobalOpt] Dead Eliminate declarations 2016-09-15 20:26:27 +00:00
deadfunction.ll
deadglobal-2.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
deadglobal.ll
externally-initialized-aggregate.ll Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
externally-initialized-global-ctr.ll
externally-initialized.ll
fastcc.ll
global-demotion.ll
globalsra-partial.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
globalsra-unknown-index.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
globalsra.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
heap-sra-1.ll
heap-sra-2.ll
heap-sra-3.ll
heap-sra-4.ll
heap-sra-phi.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
integer-bool-dwarf.ll Fixed reverted commit rL312318 2017-09-21 10:04:02 +00:00
integer-bool.ll
invariant-nodatalayout.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invariant.group.barrier.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
invariant.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invoke.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
iterate.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
load-store-global.ll
localize-constexpr-debuginfo.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
localize-constexpr.ll
malloc-promote-1.ll
malloc-promote-2.ll
malloc-promote-3.ll
memcpy.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
memset-null.ll
memset.ll
metadata.ll IR: Drop uniquing when an MDNode Value operand is deleted 2016-08-03 18:19:43 +00:00
phi-select.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
pr21191.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
pr33686.ll [GlobalOpt] Autogenerate checks for the test in PR33686. 2017-07-13 15:55:34 +00:00
preserve-comdats.ll
shrink-address-to-bool.ll Fixed reverted commit rL312318 2017-09-21 10:04:02 +00:00
storepointer-compare.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
storepointer.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
tls.ll
trivialstore.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
undef-init.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
unnamed-addr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
zeroinitializer-gep-load.ll