- Jun 20, 2013
-
-
Meador Inge authored
This commit completely removes what is left of the simplify-libcalls pass. All of the functionality has now been migrated to the instcombine and functionattrs passes. The following C API functions are now NOPs: 1. LLVMAddSimplifyLibCallsPass 2. LLVMPassManagerBuilderSetDisableSimplifyLibCalls llvm-svn: 184459
-
Nadav Rotem authored
llvm-svn: 184446
-
Nadav Rotem authored
We collect gather sequences when we vectorize basic blocks. Gather sequences are excellent hints for vectorization of other basic blocks. llvm-svn: 184444
-
Nadav Rotem authored
This change makes it easier to filter debug messages. llvm-svn: 184440
-
- Jun 19, 2013
-
-
Michael Gottesman authored
Turns out all the references were in llvm and not in clang. llvm-svn: 184356
-
Bill Wendling authored
Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change. llvm-svn: 184352
-
Matt Arsenault authored
Register it with PassManager llvm-svn: 184343
-
Quentin Colombet authored
Prior to this change, the considered addressing modes may be invalid since the maximum and minimum offsets were not taking into account. This was causing an assertion failure. The added test case exercices that behavior. <rdar://problem/14199725> Assertion failed: (CurScaleCost >= 0 && "Legal addressing mode has an illegal cost!") llvm-svn: 184341
-
Nadav Rotem authored
llvm-svn: 184325
-
Nadav Rotem authored
The type <3 x i8> is a common in graphics and we want to be able to vectorize it. This changes accelerates bullet by 12% and 471_omnetpp by 5%. llvm-svn: 184317
-
Nadav Rotem authored
llvm-svn: 184282
-
Nadav Rotem authored
llvm-svn: 184281
-
- Jun 18, 2013
-
-
Nadav Rotem authored
llvm-svn: 184201
-
Nadav Rotem authored
llvm-svn: 184200
-
Nick Lewycky authored
llvm-svn: 184174
-
- Jun 17, 2013
-
-
Pekka Jaaskelainen authored
vectorizing loops with memory accesses to non-zero address spaces. It simply dropped the AS info. Fixes PR16306. llvm-svn: 184103
-
Nadav Rotem authored
llvm-svn: 184089
-
Nadav Rotem authored
llvm-svn: 184084
-
- Jun 15, 2013
-
-
Jakub Staszak authored
llvm-svn: 184044
-
Benjamin Kramer authored
llvm-svn: 184041
-
- Jun 13, 2013
-
-
Derek Schuff authored
This pass was assuming that if hasAddressTaken() returns false for a function, the function's only uses are call sites. That's not true because there can be references by BlockAddresses too. Fix the pass to handle this case. Fix BlockAddress::replaceUsesOfWithOnConstant() to allow a function's type to be changed by RAUW'ing the function with a bitcast of the recreated function. Patch by Mark Seaborn. llvm-svn: 183933
-
- Jun 12, 2013
-
-
Rafael Espindola authored
Should fix the dragonegg build bots. llvm-svn: 183845
-
Rafael Espindola authored
Most clients have already been moved from Path V1 to V2. The ones using V1 now include PathV1.h explicitly. llvm-svn: 183801
-
- Jun 11, 2013
-
-
Rafael Espindola authored
Instead of a custom implementation of replaceAllUsesWith, we just call replaceAllUsesWith and recreate llvm.used and llvm.compiler-used. This change is particularity interesting because it makes llvm see through what clang is doing with static used functions in extern "C" contexts. With this change, running clang -O2 in extern "C" { __attribute__((used)) static void foo() {} } produces @llvm.used = appending global [1 x i8*] [i8* bitcast (void ()* @foo to i8*)], section "llvm.metadata" define internal void @foo() #0 { entry: ret void } llvm-svn: 183756
-
- Jun 09, 2013
-
-
Tim Northover authored
Variadic functions are particularly fragile in the face of ABI changes, so this limits how much the pass changes them llvm-svn: 183625
-
- Jun 08, 2013
-
-
Shuxin Yang authored
r183584 tries to derive some info from the code *AFTER* a call and apply these derived info to the code *BEFORE* the call, which is not always safe as the call in question may never return, and in this case, the derived info is invalid. Thank Duncan for pointing out this potential bug. rdar://14073661 llvm-svn: 183606
-
Shuxin Yang authored
The MemCpyOpt pass is capable of optimizing: callee(&S); copy N bytes from S to D. into: callee(&D); subject to some legality constraints. Assertion is triggered when the compiler tries to evalute "sizeof(typeof(D))", while D is an opaque-typed, 'sret' formal argument of function being compiled. i.e. the signature of the func being compiled is something like this: T caller(...,%opaque* noalias nocapture sret %D, ...) The fix is that when come across such situation, instead of calling some utility functions to get the size of D's type (which will crash), we simply assume D has at least N bytes as implified by the copy-instruction. rdar://14073661 llvm-svn: 183584
-
- Jun 07, 2013
-
-
Michael Gottesman authored
[objc-arc] Ensure that the cfg path count does not overflow when we multiply TopDownPathCount/BottomUpPathCount. rdar://12480535 llvm-svn: 183489
-
Jakub Staszak authored
llvm-svn: 183461
-
Nadav Rotem authored
Jeffrey Yasskin volunteered to benchmark the vectorizer on -O2 or -Os when compiling chrome. This patch adds a new flag to enable vectorization on all levels and not only on -O3. It should go away once we make a decision. llvm-svn: 183456
-
- Jun 06, 2013
-
-
Jakub Staszak authored
llvm-svn: 183439
-
Rafael Espindola authored
This reverts commit 183328. It caused pr16244 and broke the bots. llvm-svn: 183422
-
Jakub Staszak authored
llvm-svn: 183363
-
Jakub Staszak authored
llvm-svn: 183360
-
- Jun 05, 2013
-
-
Jakub Staszak authored
llvm-svn: 183328
-
- Jun 04, 2013
-
-
David Majnemer authored
IndVarSimplify is willing to move divide instructions outside of their loop bodies if they are invariant of the loop. However, it may not be safe to expand them if we do not know if they can trap. Instead, check to see if it is not safe to expand the instruction and skip the expansion. This fixes PR16041. Testcase by Rafael Ávila de Espíndola. llvm-svn: 183239
-
Rafael Espindola authored
The problem this time seems to be a thinko. We were assuming that in the CFG A | \ | B | / C speculating the basic block B would cause only the phi value for the B->C edge to be speculated. That is not true, the phi's are semantically in the edges, so if the A->B->C path is taken, any code needed for A->C is not executed and we have to consider it too when deciding to speculate B. llvm-svn: 183226
-
Hans Wennborg authored
llvm-svn: 183219
-
Nick Lewycky authored
llvm-svn: 183167
-
- Jun 03, 2013
-
-
David Majnemer authored
PR16069 is an interesting case where an incoming value to a PHI is a trap value while also being a 'ConstantExpr'. We do not consider this case when performing the 'HoistThenElseCodeToIf' optimization. Instead, make our modifications more conservative if we detect that we cannot transform the PHI to a select. llvm-svn: 183152
-