Go to file
Duncan Sands f4f47ccd12 GVN does simple propagation of conditions: when it sees a conditional
branch "br i1 %x, label %if_true, label %if_false" then it replaces
"%x" with "true" in places only reachable via the %if_true arm, and
with "false" in places only reachable via the %if_false arm.  Except
that actually it doesn't: if value numbering shows that %y is equal
to %x then, yes, %y will be turned into true/false in this way, but
any occurrences of %x itself are not transformed.  Fix this.  What's
more, it's often the case that %x is an equality comparison such as
"%x = icmp eq %A, 0", in which case every occurrence of %A that is
only reachable via the %if_true arm can be replaced with 0.  Implement
this and a few other variations on this theme.  This reduces the number
of lines of LLVM IR in "GCC as one big file" by 0.2%.  It has a bigger
impact on Ada code, typically reducing the number of lines of bitcode
by around 0.4% by removing repeated compiler generated checks.  Passes
the LLVM nightly testsuite and the Ada ACATS testsuite.

llvm-svn: 141177
2011-10-05 14:28:49 +00:00
clang Added a flag to identify resolved overloaded function references. 2011-10-05 07:56:41 +00:00
compiler-rt <rdar://problem/10172492> No armv4t slice of libcompiler_rt-static.a 2011-09-27 20:05:27 +00:00
debuginfo-tests Testcase for r133065 2011-06-15 17:57:23 +00:00
libcxx Fix <rdar://problem/10136825> 2011-10-04 23:11:56 +00:00
libcxxabi reformatted to match Clang style; thanks to John McCall for the nudge 2011-08-15 18:06:47 +00:00
lldb Fixed a crasher where the m_frames collection was being accessed without 2011-10-05 03:14:31 +00:00
llvm GVN does simple propagation of conditions: when it sees a conditional 2011-10-05 14:28:49 +00:00
polly Point to our own buildbot until the official one is up again. 2011-10-04 08:08:43 +00:00