[llvm] r338240 - [GVNHoist] Re-enable GVNHoist by default

Vlad Tsyrklevich via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 30 13:44:58 PDT 2018


This change has started causing OOM build failures on the UBSan bot, e.g. this
one
<http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-ubsan/builds/5257/steps/build%20clang%2Fubsan/logs/stdio>.
In particular, looking at the output for top on that machine shows that the
following command:
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build0/bin/clang-7
-cc1 -triple x86_64-unknown-linux-gnu -emit-obj -disable-free
-main-file-name SemaChecking.cpp -mrelocation-model pic -pic-level 2
-mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose
-mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64
-dwarf-column-info -debug-info-kind=line-tables-only -dwarf-version=4
-debugger-tuning=gdb -momit-leaf-frame-pointer -ffunction-sections
-fdata-sections -coverage-notes-file
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/clang/lib/Sema/CMakeFiles/clangSema.dir/SemaChecking.cpp.gcno
-resource-dir
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build0/lib/clang/7.0.0
-dependency-file
tools/clang/lib/Sema/CMakeFiles/clangSema.dir/SemaChecking.cpp.o.d
-sys-header-deps -MT
tools/clang/lib/Sema/CMakeFiles/clangSema.dir/SemaChecking.cpp.o -D
GTEST_HAS_RTTI=0 -D _DEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D
__STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -I tools/clang/lib/Sema -I
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/clang/lib/Sema
-I /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/clang/include
-I tools/clang/include -I /usr/include/libxml2 -I include -I
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/include -U NDEBUG
-internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0
-internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0
-internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0
-internal-isystem
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/backward
-internal-isystem /usr/local/include -internal-isystem
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build0/lib/clang/7.0.0/include
-internal-externc-isystem /usr/include/x86_64-linux-gnu
-internal-externc-isystem /include -internal-externc-isystem /usr/include
-O3 -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wmissing-field-initializers -Wno-long-long -Wcovered-switch-default
-Wno-class-memaccess -Wnon-virtual-dtor -Wdelete-non-virtual-dtor
-Wstring-conversion -Woverloaded-virtual -Wno-nested-anon-types -pedantic
-w -std=c++11 -fdeprecated-macro -fdebug-compilation-dir
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan
-ferror-limit 19 -fmessage-length 0 -fvisibility-inlines-hidden
-fsanitize=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,float-divide-by-zero,integer-divide-by-zero,nonnull-attribute,null,object-size,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound
-fsanitize-blacklist=/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/utils/sanitizers/ubsan_blacklist.txt
-fdepfile-entry=/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/utils/sanitizers/ubsan_blacklist.txt
-fno-rtti -fobjc-runtime=gcc -fno-common -fdiagnostics-show-option
-fcolor-diagnostics -vectorize-loops -vectorize-slp -o
tools/clang/lib/Sema/CMakeFiles/clangSema.dir/SemaChecking.cpp.o -x c++
/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/clang/lib/Sema/SemaChecking.cpp
-faddrsig

runs until it consumes all of the memory on the host and OOMs. I attribute
this failure to GVNHoist due to the following backtrace taken while it was
continuing to consume memory (the linked failure above has a different
backtrace also in GVNHoist at the point of OOM):
#0  0x000056415365aa14 in
llvm::DenseMapBase<llvm::DenseMap<llvm::BasicBlock*,
std::unique_ptr<llvm::DomTreeNodeBas
e<llvm::BasicBlock>,
std::default_delete<llvm::DomTreeNodeBase<llvm::BasicBlock> > >,
llvm::DenseMapInfo<llvm::Basi
cBlock*>, llvm::detail::DenseMapPair<llvm::BasicBlock*,
std::unique_ptr<llvm::DomTreeNodeBase<llvm::BasicBlock>, st
d::default_delete<llvm::DomTreeNodeBase<llvm::BasicBlock> > > > >,
llvm::BasicBlock*, std::unique_ptr<llvm::DomTree
NodeBase<llvm::BasicBlock>,
std::default_delete<llvm::DomTreeNodeBase<llvm::BasicBlock> > >,
llvm::DenseMapInfo<llv
m::BasicBlock*>, llvm::detail::DenseMapPair<llvm::BasicBlock*,
std::unique_ptr<llvm::DomTreeNodeBase<llvm::BasicBlo
ck>, std::default_delete<llvm::DomTreeNodeBase<llvm::BasicBlock> > > >
>::find(llvm::BasicBlock const*) const ()
#1  0x00005641543972bd in llvm::DominatorTreeBase<llvm::BasicBlock,
false>::getNode(llvm::BasicBlock const*) const
    ()
#2  0x00005641543974a5 in llvm::DominatorTreeBase<llvm::BasicBlock,
false>::properlyDominates(llvm::BasicBlock cons
t*, llvm::BasicBlock const*) const ()
#3  0x00005641547171a3 in
llvm::GVNHoist::computeInsertionPoints(llvm::DenseMap<std::pair<unsigned
int, unsigned in
t>, llvm::SmallVector<llvm::Instruction*, 4u>,
llvm::DenseMapInfo<std::pair<unsigned int, unsigned int> >, llvm::de
tail::DenseMapPair<std::pair<unsigned int, unsigned int>,
llvm::SmallVector<llvm::Instruction*, 4u> > > const&, llv
m::SmallVector<std::pair<llvm::BasicBlock*,
llvm::SmallVector<llvm::Instruction*, 4u> >, 4u>&, llvm::GVNHoist::InsK
ind) [clone .constprop.541] ()
#4  0x0000564154717ea8 in llvm::GVNHoist::hoistExpressions(llvm::Function&)
()
#5  0x0000564154718682 in llvm::GVNHoist::run(llvm::Function&) ()
#6  0x0000564154718be8 in
llvm::GVNHoistLegacyPass::runOnFunction(llvm::Function&) [clone .part.531]
()
#7  0x00005641543f8c8f in
llvm::FPPassManager::runOnFunction(llvm::Function&) ()
#8  0x0000564153e00717 in (anonymous
namespace)::CGPassManager::runOnModule(llvm::Module&) ()
#9  0x00005641543f9868 in llvm::legacy::PassManagerImpl::run(llvm::Module&)
()
#10 0x0000564154b166d0 in
clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::HeaderSearchOptions const&, clang::CodeGenOptions const&,
clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout
const&, llvm::Module*, clang::BackendAction,
std::unique_ptr<llvm::raw_pwrite_stream,
std::default_delete<llvm::raw_pwrite_stream> >) ()
#11 0x00005641552b3f34 in
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) ()
#12 0x0000564155a6cc99 in clang::ParseAST(clang::Sema&, bool, bool) ()
#13 0x00005641552b3199 in clang::CodeGenAction::ExecuteAction() ()
#14 0x0000564154f5168e in clang::FrontendAction::Execute() ()
#15 0x0000564154f1cb26 in
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) ()
#16 0x0000564154ff12b1 in
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) ()
#17 0x0000564153064e00 in cc1_main(llvm::ArrayRef<char const*>, char
const*, void*) ()
#18 0x0000564152fd76e2 in main ()

I've reverted this change in r338297.

On Mon, Jul 30, 2018 at 3:50 AM Alexandros Lamprineas via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: alelab01
> Date: Mon Jul 30 03:50:18 2018
> New Revision: 338240
>
> URL: http://llvm.org/viewvc/llvm-project?rev=338240&view=rev
> Log:
> [GVNHoist] Re-enable GVNHoist by default
>
> My initial motivation for this came from https://reviews.llvm.org/D48122,
> where it was pointed out that my change didn't fit well in SimplifyCFG and
> therefore using GVNHoist was a better way to go. GVNHoist has been disabled
> for a while as there was a list of bugs related to it.
>
> I have fixed the following bugs:
>
> https://bugs.llvm.org/show_bug.cgi?id=37808 ->
> https://reviews.llvm.org/D48372 (rL337149)
> https://bugs.llvm.org/show_bug.cgi?id=36787 ->
> https://reviews.llvm.org/D49555 (rL337674)
> https://bugs.llvm.org/show_bug.cgi?id=37445 ->
> https://reviews.llvm.org/D49425 (rL337680)
>
> The next two bugs no longer occur, and it's unclear which commit fixed
> them:
>
> https://bugs.llvm.org/show_bug.cgi?id=36635
> https://bugs.llvm.org/show_bug.cgi?id=37791
>
> I investigated this one and proved to be unrelated to GVNHoist, but a
> genuine bug in NewGvn:
>
> https://bugs.llvm.org/show_bug.cgi?id=37660
>
> To convince myself GVNHoist is in a good state I made a successful
> bootstrap build of LLVM.
> Merging this change now in order to make it to the LLVM 7.0.0 branch.
>
> Differential Revision: https://reviews.llvm.org/D49858
>
> Modified:
>     llvm/trunk/lib/Passes/PassBuilder.cpp
>     llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>     llvm/trunk/test/Other/new-pm-defaults.ll
>     llvm/trunk/test/Other/new-pm-thinlto-defaults.ll
>     llvm/trunk/test/Other/opt-O2-pipeline.ll
>     llvm/trunk/test/Other/opt-O3-pipeline.ll
>     llvm/trunk/test/Other/opt-Os-pipeline.ll
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Mon Jul 30 03:50:18 2018
> @@ -174,8 +174,8 @@ static cl::opt<bool> EnableEarlyCSEMemSS
>      cl::desc("Enable the EarlyCSE w/ MemorySSA pass for the new PM
> (default = on)"));
>
>  static cl::opt<bool> EnableGVNHoist(
> -    "enable-npm-gvn-hoist", cl::init(false), cl::Hidden,
> -    cl::desc("Enable the GVN hoisting pass for the new PM (default =
> off)"));
> +    "enable-npm-gvn-hoist", cl::init(true), cl::Hidden,
> +    cl::desc("Enable the GVN hoisting pass for the new PM (default =
> on)"));
>
>  static cl::opt<bool> EnableGVNSink(
>      "enable-npm-gvn-sink", cl::init(false), cl::Hidden,
>
> Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Mon Jul 30
> 03:50:18 2018
> @@ -135,8 +135,8 @@ static cl::opt<bool> EnableEarlyCSEMemSS
>      cl::desc("Enable the EarlyCSE w/ MemorySSA pass (default = on)"));
>
>  static cl::opt<bool> EnableGVNHoist(
> -    "enable-gvn-hoist", cl::init(false), cl::Hidden,
> -    cl::desc("Enable the GVN hoisting pass (default = off)"));
> +    "enable-gvn-hoist", cl::init(true), cl::Hidden,
> +    cl::desc("Enable the GVN hoisting pass (default = on)"));
>
>  static cl::opt<bool>
>      DisableLibCallsShrinkWrap("disable-libcalls-shrinkwrap",
> cl::init(false),
>
> Modified: llvm/trunk/test/Other/new-pm-defaults.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-defaults.ll?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/new-pm-defaults.ll (original)
> +++ llvm/trunk/test/Other/new-pm-defaults.ll Mon Jul 30 03:50:18 2018
> @@ -121,6 +121,9 @@
>  ; CHECK-O-NEXT: Running pass: SROA
>  ; CHECK-O-NEXT: Running pass: EarlyCSEPass
>  ; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis
> +; CHECK-O-NEXT: Running pass: GVNHoistPass on foo
> +; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: MemoryDependenceAnalysis on foo
>  ; CHECK-O-NEXT: Running pass: SpeculativeExecutionPass
>  ; CHECK-O-NEXT: Running pass: JumpThreadingPass
>  ; CHECK-O-NEXT: Running analysis: LazyValueAnalysis
> @@ -169,18 +172,13 @@
>  ; CHECK-O-NEXT: Finished Loop pass manager run.
>  ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Os-NEXT: Running pass: GVN
> -; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Oz-NEXT: Running pass: GVN
> -; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O2-NEXT: Running pass: GVN
> -; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O3-NEXT: Running pass: GVN
> -; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> -; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O-NEXT: Running pass: SCCPPass
>  ; CHECK-O-NEXT: Running pass: BDCEPass
>  ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> @@ -196,7 +194,6 @@
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run.
>  ; CHECK-EP-SCALAR-LATE-NEXT: Running pass: NoOpFunctionPass
>  ; CHECK-O-NEXT: Running pass: ADCEPass
> -; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
>  ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
>  ; CHECK-O-NEXT: Running pass: InstCombinePass
>  ; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
>
> Modified: llvm/trunk/test/Other/new-pm-thinlto-defaults.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-thinlto-defaults.ll?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/new-pm-thinlto-defaults.ll (original)
> +++ llvm/trunk/test/Other/new-pm-thinlto-defaults.ll Mon Jul 30 03:50:18
> 2018
> @@ -106,6 +106,9 @@
>  ; CHECK-O-NEXT: Running pass: SROA
>  ; CHECK-O-NEXT: Running pass: EarlyCSEPass
>  ; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis
> +; CHECK-O-NEXT: Running pass: GVNHoistPass on foo
> +; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
> +; CHECK-O-NEXT: Running analysis: MemoryDependenceAnalysis on foo
>  ; CHECK-O-NEXT: Running pass: SpeculativeExecutionPass
>  ; CHECK-O-NEXT: Running pass: JumpThreadingPass
>  ; CHECK-O-NEXT: Running analysis: LazyValueAnalysis
> @@ -151,18 +154,13 @@
>  ; CHECK-O-NEXT: Finished Loop pass manager run.
>  ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Os-NEXT: Running pass: GVN
> -; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-Oz-NEXT: Running pass: GVN
> -; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O2-NEXT: Running pass: GVN
> -; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
>  ; CHECK-O3-NEXT: Running pass: GVN
> -; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> -; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
>  ; CHECK-O-NEXT: Running pass: SCCPPass
>  ; CHECK-O-NEXT: Running pass: BDCEPass
>  ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> @@ -176,7 +174,6 @@
>  ; CHECK-O-NEXT: Running pass: LCSSAPass
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run
>  ; CHECK-O-NEXT: Running pass: ADCEPass
> -; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
>  ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
>  ; CHECK-O-NEXT: Running pass: InstCombinePass
>  ; CHECK-O-NEXT: Finished llvm::Function pass manager run.
>
> Modified: llvm/trunk/test/Other/opt-O2-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O2-pipeline.ll?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-O2-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-O2-pipeline.ll Mon Jul 30 03:50:18 2018
> @@ -58,7 +58,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoisting of Expressions
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Lazy Value Information Analysis
>  ; CHECK-NEXT:         Jump Threading
>
> Modified: llvm/trunk/test/Other/opt-O3-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O3-pipeline.ll?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-O3-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-O3-pipeline.ll Mon Jul 30 03:50:18 2018
> @@ -61,7 +61,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoist
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Lazy Value Information Analysis
>  ; CHECK-NEXT:         Jump Threading
>
> Modified: llvm/trunk/test/Other/opt-Os-pipeline.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-Os-pipeline.ll?rev=338240&r1=338239&r2=338240&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Other/opt-Os-pipeline.ll (original)
> +++ llvm/trunk/test/Other/opt-Os-pipeline.ll Mon Jul 30 03:50:18 2018
> @@ -58,7 +58,12 @@
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Memory SSA
>  ; CHECK-NEXT:         Early CSE w/ MemorySSA
> +; CHECK-NEXT:         Post-Dominator Tree Construction
> +; CHECK-NEXT:         Function Alias Analysis Results
> +; CHECK-NEXT:         Memory Dependence Analysis
> +; CHECK-NEXT:         Early GVN Hoisting of Expressions
>  ; CHECK-NEXT:         Speculatively execute instructions if target has
> divergent branches
> +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>  ; CHECK-NEXT:         Function Alias Analysis Results
>  ; CHECK-NEXT:         Lazy Value Information Analysis
>  ; CHECK-NEXT:         Jump Threading
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180730/05a60fad/attachment.html>


More information about the llvm-commits mailing list