- Oct 31, 2013
-
-
Rafael Espindola authored
llvm-svn: 193734
-
- Oct 30, 2013
-
-
Matt Arsenault authored
llvm-svn: 193720
-
Matt Arsenault authored
llvm-svn: 193710
-
- Oct 29, 2013
-
-
Arnold Schwaighofer authored
By vectorizing a series of srl, or, ... instructions we have obfuscated the intention so much that the backend does not know how to fold this code away. radar://15336950 llvm-svn: 193573
-
Arnold Schwaighofer authored
No test case, because with the current cost model we don't see a difference. An upcoming ARM memory cost model change will expose and test this bug. radar://15332579 llvm-svn: 193572
-
- Oct 27, 2013
-
-
Shuxin Yang authored
llvm-svn: 193489
-
- Oct 26, 2013
-
-
Wan Xiaofei authored
This patch implements quick look-up for block in loop by maintaining a hash set for blocks. It improves the efficiency of loop analysis a lot, the biggest improvement could be 5-6%(458.sjeng). Below are the compilation time for our benchmark in llc before & after the patch. Benchmark llc - trunk llc - patched 401.bzip2 0.339081 100.00% 0.329657 102.86% 403.gcc 19.853966 100.00% 19.605466 101.27% 429.mcf 0.049823 100.00% 0.048451 102.83% 433.milc 0.514898 100.00% 0.510217 100.92% 444.namd 1.109328 100.00% 1.103481 100.53% 445.gobmk 4.988028 100.00% 4.929114 101.20% 456.hmmer 0.843871 100.00% 0.825865 102.18% 458.sjeng 0.754238 100.00% 0.714095 105.62% 464.h264ref 2.9668 100.00% 2.90612 102.09% 471.omnetpp 4.556533 100.00% 4.511886 100.99% bitmnp01 0.038168 100.00% 0.0357 106.91% idctrn01 0.037745 100.00% 0.037332 101.11% libquake2 3.78689 100.00% 3.76209 100.66% libquake_ 2.251525 100.00% 2.234104 100.78% linpack 0.033159 100.00% 0.032788 101.13% matrix01 0.045319 100.00% 0.043497 104.19% nbench 0.333161 100.00% 0.329799 101.02% tblook01 0.017863 100.00% 0.017666 101.12% ttsprk01 0.054337 100.00% 0.053057 102.41% Reviewer : Andrew Trick <atrick@apple.com>, Hal Finkel <hfinkel@anl.gov> Approver : Andrew Trick <atrick@apple.com> Test : Pass make check-all & llvm test-suite llvm-svn: 193460
-
- Oct 25, 2013
-
-
Andrew Trick authored
Partial fix for PR17459: wrong code at -O3 on x86_64-linux-gnu (affecting trunk and 3.3) When SCEV expands a recurrence outside of a loop it attempts to scale by the stride of the recurrence. Chained recurrences don't work that way. We could compute binomial coefficients, but would hve to guarantee that the chained AddRec's are in a perfectly reduced form. llvm-svn: 193438
-
Rafael Espindola authored
This patch teaches GlobalStatus to analyze a call that uses the global value as a callee, not as an argument. With this change internalize call handle the common use of linkonce_odr functions. This reduces the number of linkonce_odr functions in a LTO build of clang (checked with the emit-llvm gold plugin option) from 1730 to 60. llvm-svn: 193436
-
Hal Finkel authored
The loop vectorizer does not currently understand how to vectorize extractelement instructions. The existing check, which excluded all vector-valued instructions, did not catch extractelement instructions because it checked only the return value. As a result, vectorization would proceed, producing illegal instructions like this: %58 = extractelement <2 x i32> %15, i32 0 %59 = extractelement i32 %58, i32 0 where the second extractelement is illegal because its first operand is not a vector. llvm-svn: 193434
-
- Oct 24, 2013
-
-
Tom Stellard authored
Patch by: Vincent Lejeune llvm-svn: 193356
-
Renato Golin authored
Make sure we mark all loops (scalar and vector) when vectorizing, so that we don't try to vectorize them anymore. Also, set unroll to 1, since this is what we check for on early exit. llvm-svn: 193349
-
Nuno Lopes authored
LLVM optimizers may widen accesses to packed structures that overflow the structure itself, but should be in bounds up to the alignment of the object llvm-svn: 193317
-
Juergen Ributzka authored
Reviewed by Andy llvm-svn: 193303
-
Andrew Trick authored
llvm-svn: 193292
-
- Oct 23, 2013
-
-
Yuchen Wu authored
llvm-svn: 193268
-
Shuxin Yang authored
Major steps include: 1). introduces a not-addr-taken bit-field in GlobalVariable 2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable dosen't have its address taken. 3). AA use this info for disambiguation. llvm-svn: 193251
-
- Oct 22, 2013
-
-
Eric Christopher authored
llvm-svn: 193130
-
- Oct 21, 2013
-
-
Tom Stellard authored
v2: - Use CI->cannotDuplicate() llvm-svn: 193115
-
Matt Arsenault authored
llvm-svn: 193109
-
Matt Arsenault authored
llvm-svn: 193104
-
Rafael Espindola authored
When a linkonce_odr value that is on the dso list is not unnamed_addr we can still look to see if anything is actually using its address. If not, it is safe to hide it. This patch implements that by moving GlobalStatus to Transforms/Utils and using it in Internalize. llvm-svn: 193090
-
Michael Gottesman authored
Additionally some small comment/stylistic fixes are included as well. llvm-svn: 193068
-
Bill Wendling authored
A landing pad can be jumped to only by the unwind edge of an invoke instruction. If we eliminate a partially redundant load in a landing pad, it will create a basic block that violates this constraint. It then leads to other problems down the line if it tries to merge that basic block with the landing pad. Avoid this by not eliminating the load in a landing pad. PR17621 llvm-svn: 193064
-
- Oct 20, 2013
-
-
Michael Gottesman authored
One optimization simplify-cfg performs is the converting of switches to lookup tables if the switch has > 4 cases. This is done by: 1. Finding the max/min case value and calculating the switch case range. 2. Create a lookup table basic block. 3. Perform a check in the switch's BB to see if the input value is in the switch's case range. If the input value satisfies said predicate branch to the lookup table BB, otherwise branch to the switch's default destination BB using the default value as the result. The conditional check consists of subtracting the min case value of the table from any input iN value and then ensuring that said value is unsigned less than the size of the lookup table represented as an iN value. If the lookup table is a covered lookup table, the size of the table will be N which is 0 as an iN value. Thus the comparison will be an `icmp ult` of an iN value against 0 which is always false yielding the incorrect result. This patch fixes this problem by recognizing if we have a covered lookup table and if we do, unconditionally jumps to the lookup table BB since the covering property of the lookup table implies no input values could not be handled by said BB. rdar://15268442 llvm-svn: 193045
-
- Oct 19, 2013
-
-
Bill Wendling authored
If the predecessor's being spliced into a landing pad, then we need the PHIs to come first and the rest of the predecessor's code to come *after* the landing pad instruction. llvm-svn: 193035
-
Nadav Rotem authored
llvm-svn: 193013
-
- Oct 17, 2013
-
-
Rafael Espindola authored
llvm-svn: 192910
-
Rafael Espindola authored
llvm-svn: 192907
-
Rafael Espindola authored
No functionality change. llvm-svn: 192906
-
Evgeniy Stepanov authored
Switch to sign-extension in r192575 caused 7% perf loss on 482.sphinx3. llvm-svn: 192882
-
Dmitry Vyukov authored
If a function has no_sanitize_thread attribute, do not instrument memory accesses in it. llvm-svn: 192871
-
- Oct 16, 2013
-
-
Arnold Schwaighofer authored
radar://15231682 Reapply r192799, http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang/builds/8226 showed that the bot is still broken even with this out. llvm-svn: 192820
-
Arnold Schwaighofer authored
This speculatively reverts commit 192799. It might have broken a linux buildbot. llvm-svn: 192816
-
Arnold Schwaighofer authored
radar://15231682 llvm-svn: 192799
-
Kostya Serebryany authored
Summary: Given a global array G[N], which is declared in this CU and has static initializer avoid instrumenting accesses like G[i], where 'i' is a constant and 0<=i<N. Also add a bit of stats. This eliminates ~1% of instrumentations on SPEC2006 and also partially helps when asan is being run together with coverage. Reviewers: samsonov Reviewed By: samsonov CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1947 llvm-svn: 192794
-
- Oct 15, 2013
-
-
Benjamin Kramer authored
llvm-svn: 192717
-
Craig Topper authored
Remove x86_sse42_crc32_64_8 intrinsic. It has no functional difference from x86_sse42_crc32_32_8 and was not mapped to a clang builtin. I'm not even sure why this form of the instruction is even called out explicitly in the docs. Also add AutoUpgrade support to convert it into the other intrinsic with appropriate trunc and zext. llvm-svn: 192672
-
- Oct 14, 2013
-
-
Rafael Espindola authored
They were leftover from the old profiling support. Patch by Alastair Murray. llvm-svn: 192605
-
Chris Lattner authored
avoid a heap allocation when this is the case. llvm-svn: 192602
-