- Aug 30, 2013
-
-
Bill Wendling authored
llvm-svn: 189632
-
- Aug 29, 2013
-
-
Nadav Rotem authored
Vectorizer/PassManager: I am working on moving the vectorizer out of the SCC passes. This patch moves the SLP-vectorizer and BB-vectorizer back into SCC passes for two reasons: 1. They are a kind of cannonicalization. 2. The performance measurements show that it is better to keep them in. There should be no functional change if you are not enabling the LateVectorization mode. llvm-svn: 189539
-
- Aug 28, 2013
-
-
Hal Finkel authored
When unrolling is disabled in the pass manager, the loop vectorizer should also not unroll loops. This will allow the -fno-unroll-loops option in Clang to behave as expected (even for vectorizable loops). The loop vectorizer's -force-vector-unroll option will (continue to) override the pass-manager setting (including -force-vector-unroll=0 to force use of the internal auto-selection logic). In order to test this, I added a flag to opt (-disable-loop-unrolling) to force disable unrolling through opt (the analog of -fno-unroll-loops in Clang). Also, this fixes a small bug in opt where the loop vectorizer was enabled only after the pass manager populated the queue of passes (the global_alias.ll test needed a slight update to the RUN line as a result of this fix). llvm-svn: 189499
-
- Aug 27, 2013
-
-
Michael Gottesman authored
Noticed by Stephen Checkoway <s@pahtak.org>. llvm-svn: 189312
-
- Aug 23, 2013
-
-
Michael Gottesman authored
Update StripDeadDebugInfo to use DebugInfoFinder so that it is no longer stale to the point of not working and more resilient to debug info changes. The current version of StripDeadDebugInfo became stale and no longer actually worked since it was expecting an older version of debug info. This patch updates it to use DebugInfoFinder and the modern DebugInfo classes as much as possible to make it more redundent to such changes. Additionally, the only place where that was avoided (the code where we replace the old sets with the new), I call verify on the DIContextUnit implying that if the format changes and my live set changes no longer make sense an assert will be hit. In order to ensure that that occurs I have included a test case. The actual stripping of the dead debug info follows the same strategy as was used before in this class: find the live set and replace the old set in the given compile unit (which may contain dead global variables/functions) with the new live one. llvm-svn: 189078
-
- Aug 22, 2013
-
-
Michael Gottesman authored
llvm-svn: 188957
-
Michael Gottesman authored
llvm-svn: 188956
-
- Aug 13, 2013
-
-
Arnold Schwaighofer authored
llvm-svn: 188285
-
Arnold Schwaighofer authored
I have moved this logic into clang and opt. llvm-svn: 188281
-
- Aug 12, 2013
-
-
Bill Wendling authored
llvm-svn: 188198
-
- Aug 06, 2013
-
-
Tom Stellard authored
Patch by: Mei Ye llvm-svn: 187764
-
- Aug 02, 2013
-
-
Nadav Rotem authored
llvm-svn: 187628
-
- Aug 01, 2013
-
-
Nadav Rotem authored
llvm-svn: 187595
-
- Jul 27, 2013
-
-
Tom Stellard authored
Merge consecutive if-regions if they contain identical statements. Both transformations reduce number of branches. The transformation is guarded by a target-hook, and is currently enabled only for +R600, but the correctness has been tested on X86 target using a variety of CPU benchmarks. Patch by: Mei Ye llvm-svn: 187278
-
- Jul 25, 2013
-
-
Rafael Espindola authored
The language reference says that: "If a symbol appears in the @llvm.used list, then the compiler, assembler, and linker are required to treat the symbol as if there is a reference to the symbol that it cannot see" Since even the linker cannot see the reference, we must assume that the reference can be using the symbol table. For example, a user can add __attribute__((used)) to a debug helper function like dump and use it from a debugger. llvm-svn: 187103
-
Nick Lewycky authored
llvm-svn: 187099
-
Rafael Espindola authored
Thanks to Nick Lewycky for noticing it. llvm-svn: 187098
-
- Jul 21, 2013
-
-
Rafael Espindola authored
GlobalOpt simplifies llvm.compiler.used by removing any members that are also in the more strict llvm.used. Handle the special case where llvm.compiler.used becomes empty. llvm-svn: 186778
-
- Jul 19, 2013
-
-
Rafael Espindola authored
We were incorrectly using compiler_used instead of compiler.used. Unfortunately the passes using the broken name had tests also using the broken name. llvm-svn: 186705
-
Nick Lewycky authored
llvm-svn: 186622
-
- Jul 17, 2013
-
-
Hal Finkel authored
Duncan pointed out a mistake in my fix in r186425 when only one of the allocas being compared had the target-default alignment. This is essentially his suggested solution. Thanks! llvm-svn: 186510
-
- Jul 16, 2013
-
-
Hal Finkel authored
For safety, the inliner cannot decrease the allignment on an alloca when merging it with another. I've included two variants of the test case for this: one with DataLayout available, and one without. When DataLayout is not available, if only one of the allocas uses the default alignment (getAlignment() == 0), then they cannot be safely merged. llvm-svn: 186425
-
- Jul 09, 2013
-
-
Eli Bendersky authored
llvm-svn: 185888
-
- Jul 06, 2013
-
-
Nick Lewycky authored
llvm-svn: 185738
-
Nick Lewycky authored
functions. Make the function attributes pass add it to known library functions and when it can deduce it. llvm-svn: 185735
-
- Jul 04, 2013
-
-
Nick Lewycky authored
llvm-svn: 185612
-
Craig Topper authored
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. llvm-svn: 185606
-
- Jul 03, 2013
-
-
Michael Gottesman authored
Added support in FunctionAttrs for adding relevant function/argument attributes for the posix call gettimeofday. This implies annotating it as nounwind and its arguments as nocapture. To be conservative, we do not annotate the arguments with noalias since some platforms do not have restrict on the declaration for gettimeofday. llvm-svn: 185502
-
- Jul 02, 2013
-
-
Nick Lewycky authored
llvm-svn: 185414
-
- Jun 30, 2013
-
-
Stephen Lin authored
DeadArgumentElimination: keep return value on functions that have a live argument with the 'returned' attribute (rather than generate invalid IR); however, if both can be eliminated, both will be llvm-svn: 185290
-
- Jun 28, 2013
-
-
Manman Ren authored
No functionality change. It should suffice to check the type of a debug info metadata, instead of calling Verify. For cases where we know the type of a DI metadata, use assert. Also update testing cases to make them conform to the format of DI classes. llvm-svn: 185135
-
- Jun 24, 2013
-
-
Chandler Carruth authored
CGSCC pass manager. This should insulate the inlining decisions from the vectorization decisions, however it may have both compile time and code size problems so it is just an experimental option right now. Adding this based on a discussion with Arnold and it seems at least worth having this flag for us to both run some experiments to see if this strategy is workable. It may solve some of the regressions seen with the loop vectorizer. llvm-svn: 184698
-
- Jun 22, 2013
-
-
Benjamin Kramer authored
It doesn't work as I intended it to. This reverts commit r184638. llvm-svn: 184641
-
Benjamin Kramer authored
It has become an expensive operation. No functionality change. llvm-svn: 184638
-
- 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
-
- Jun 17, 2013
-
-
Nadav Rotem authored
llvm-svn: 184089
-
Nadav Rotem authored
llvm-svn: 184084
-
- Jun 15, 2013
-
-
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
-