- Sep 13, 2012
-
-
Dmitri Gribenko authored
* wrap code blocks in \code ... \endcode; * refer to parameter names in paragraphs correctly (\arg is not what most people want -- it starts a new paragraph). llvm-svn: 163790
-
- Sep 12, 2012
-
-
-
Manman Ren authored
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163344. llvm-svn: 163679
-
- Sep 10, 2012
-
-
Nick Lewycky authored
llvm-svn: 163485
-
- Sep 09, 2012
-
-
Benjamin Kramer authored
llvm-svn: 163480
-
- Sep 06, 2012
-
-
Manman Ren authored
No functional change. llvm-svn: 163344
-
Jim Grosbach authored
No functional change. llvm-svn: 163279
-
- Sep 05, 2012
-
-
Dan Gohman authored
pointers-to-strong-pointers may be in play. These can lead to retains and releases happening in unstructured ways, foiling the optimizer. This fixes rdar://12150909. llvm-svn: 163180
-
- Sep 04, 2012
-
-
Preston Gurd authored
- CodeGenPrepare pass for identifying div/rem ops - Backend specifies the type mapping using addBypassSlowDivType - Enabled only for Intel Atom with O2 32-bit -> 8-bit - Replace IDIV with instructions which test its value and use DIVB if the value is positive and less than 256. - In the case when the quotient and remainder of a divide are used a DIV and a REM instruction will be present in the IR. In the non-Atom case they are both lowered to IDIVs and CSE removes the redundant IDIV instruction, using the quotient and remainder from the first IDIV. However, due to this optimization CSE is not able to eliminate redundant IDIV instructions because they are located in different basic blocks. This is overcome by calculating both the quotient (DIV) and remainder (REM) in each basic block that is inserted by the optimization and reusing the result values when a subsequent DIV or REM instruction uses the same operands. - Test cases check for the presents of the optimization when calculating either the quotient, remainder, or both. Patch by Tyler Nowicki! llvm-svn: 163150
-
Nadav Rotem authored
Scan the body of the loop and find instructions that may trap. Use this information when deciding if it is safe to hoist or sink instructions. Notice that we can optimize the search of instructions that may throw in the case of nested loops. rdar://11518836 llvm-svn: 163132
-
- Sep 02, 2012
-
-
Nadav Rotem authored
For example, the ARM target does not have efficient ISel handling for vector selects with scalar conditions. This patch adds a TLI hook which allows the different targets to report which selects are supported well and which selects should be converted to CF duting codegen prepare. llvm-svn: 163093
-
Benjamin Kramer authored
We update until we hit a fixpoint. This is probably slow but also slightly simplifies the code. It should also fix the occasional invalid domtrees observed when building with expensive checking. I couldn't find a case where this had a measurable slowdown, but if someone finds a pathological case where it does we may have to find a cleverer way of updating dominators here. Thanks to Duncan for the test case. llvm-svn: 163091
-
- Sep 01, 2012
-
-
Benjamin Kramer authored
llvm-svn: 163058
-
- Aug 30, 2012
-
-
Benjamin Kramer authored
The old PHI updating code in loop-rotate was replaced with SSAUpdater a while ago, it has no problems with comples PHIs. What had to be fixed is detecting whether a loop was already rotated and updating dominators when multiple exits were present. This change increases overall code size a bit, mostly due to additional loop unrolling opportunities. Passes test-suite and selfhost with -verify-dom-info. Fixes PR7447. Thanks to Andy for the input on the domtree updating code. llvm-svn: 162912
-
- Aug 29, 2012
-
-
Benjamin Kramer authored
This disables malloc-specific optimization when -fno-builtin (or -ffreestanding) is specified. This has been a problem for a long time but became more severe with the recent memory builtin improvements. Since the memory builtin functions are used everywhere, this required passing TLI in many places. This means that functions that now have an optional TLI argument, like RecursivelyDeleteTriviallyDeadFunctions, won't remove dead mallocs anymore if the TLI argument is missing. I've updated most passes to do the right thing. Fixes PR13694 and probably others. llvm-svn: 162841
-
- Aug 27, 2012
-
-
Dan Gohman authored
intended functionality change. Thanks to Ahmed Charles for spotting it. llvm-svn: 162686
-
- Aug 24, 2012
-
-
Benjamin Kramer authored
No intended behavior change. This was introduced in r162023. With the fixed algorithm a Release build of ARMInstPrinter.cpp goes from 16s to 10s on a 2011 MBP. llvm-svn: 162559
-
- Aug 22, 2012
-
-
Benjamin Kramer authored
llvm-svn: 162383
-
Chad Rosier authored
optimizations are guarded by the -enable-double-float-shrink LLVM option. Last bit of PR13574. Patch by Weiming Zhao <weimingz@codeaurora.org>. llvm-svn: 162368
-
Chad Rosier authored
functional change intended. Patch by Weiming Zhao <weimingz@codeaurora.org>. llvm-svn: 162363
-
- Aug 21, 2012
-
-
Richard Smith authored
llvm-svn: 162309
-
Chandler Carruth authored
This optimization is really just replacing allocas wholesale with globals, there is no scalarization. The underlying motivation for this patch is to simplify the SROA pass and focus it on splitting and promoting allocas. llvm-svn: 162271
-
Michael Liao authored
llvm-svn: 162256
-
- Aug 18, 2012
-
-
Benjamin Kramer authored
SimplifyLibcalls: Add fabs and trunc to the list of libcalls that are safe to shrink from double to float. llvm-svn: 162173
-
- Aug 16, 2012
-
-
Rafael Espindola authored
where some fact lake a=b dominates a use in a phi, but doesn't dominate the basic block itself. This feature could also be implemented by splitting critical edges, but at least with the current algorithm reasoning about the dominance directly is faster. The time for running "opt -O2" in the testcase in pr10584 is 1.003 times slower and on gcc as a single file it is 1.0007 times faster. llvm-svn: 162023
-
- Aug 15, 2012
-
-
Bill Wendling authored
llvm-svn: 161990
-
- Aug 14, 2012
-
-
Craig Topper authored
Change greater than to greater than or equal so that an identical sized store to the same offset is treated as completing overwriting. llvm-svn: 161857
-
Nadav Rotem authored
and allow some optimizations to turn conditional branches into unconditional. This commit adds a simple control-flow optimization which merges two consecutive basic blocks which are connected by a single edge. This allows the codegen to operate on larger basic blocks. rdar://11973998 llvm-svn: 161852
-
- Aug 10, 2012
-
-
Rafael Espindola authored
llvm-svn: 161668
-
Pete Cooper authored
Fix crash when when do lto on Bullet. Dynamic GEPs in SROA were incorrectly being applied to all accesses to an alloca, not just the ones which read from the GEP. Thanks to Evan for reducing the test. rdar://11861001 llvm-svn: 161654
-
- Aug 08, 2012
-
-
Eli Friedman authored
sure we account for that correctly in DeadStoreElimination. Fixes a regression from r158919. PR13547. llvm-svn: 161468
-
Dan Gohman authored
multiple scalar promotions on a single loop. This also has the effect of preserving the order of stores sunk out of loops, which is aesthetically pleasing, and it happens to fix the testcase in PR13542, though it doesn't fix the underlying problem. llvm-svn: 161459
-
- Jul 27, 2012
-
-
Evan Cheng authored
into predecessor blocks to enable tail call optimization. rdar://11958338 llvm-svn: 160894
-
- Jul 26, 2012
-
-
Nuno Lopes authored
Thanks Eli for noticing. llvm-svn: 160787
-
Duncan Sands authored
is a temporary measure until my fix for PR13021 is ready. llvm-svn: 160778
-
- Jul 25, 2012
-
-
Nuno Lopes authored
make all Emit*() functions consult the TargetLibraryInfo information before creating a call to a library function. Update all clients to pass the TLI information around. Previous draft reviewed by Eli. llvm-svn: 160733
-
- Jul 24, 2012
-
-
Nadav Rotem authored
llvm-svn: 160668
-
- Jul 23, 2012
-
-
Dan Gohman authored
rdar://11931823. llvm-svn: 160637
-
Nadav Rotem authored
llvm-svn: 160629
-
Sylvestre Ledru authored
llvm-svn: 160621
-