2e2efd960056bbb7e4bbd843c8de55116d52aa7d |
|
04-Sep-2012 |
Preston Gurd <preston.gurd@intel.com> |
Generic Bypass Slow Div - 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! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163150 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9f40cb32ac31283f8636d516e7b10f3ad921955c |
|
02-Sep-2012 |
Nadav Rotem <nrotem@apple.com> |
Not all targets have efficient ISel code generation for select instructions. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6 |
|
29-Aug-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make MemoryBuiltins aware of TargetLibraryInfo. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
787ed03ec17b3936b15a9997fa107a3bdcb69050 |
|
21-Aug-2012 |
Michael Liao <michael.liao@intel.com> |
revise debug output to avoid dangling pointer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8dd2e5bf8331f55e099763bab2b95f7509649b84 |
|
15-Aug-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove dead flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3e883734fab4da8413f16957dd116d4ffd9d3223 |
|
14-Aug-2012 |
Nadav Rotem <nrotem@apple.com> |
During the CodeGenPrepare we often lower intrinsics (such as objsize) 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9c777a484415198b3fb0dbeb57a594573b245152 |
|
27-Jul-2012 |
Evan Cheng <evan.cheng@apple.com> |
Teach CodeGenPrep to look past bitcast when it's duplicating return instruction into predecessor blocks to enable tail call optimization. rdar://11958338 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
51004dff923259c90591621e7151408ad94e0eb8 |
|
25-Jul-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a94d6e87c4c49f2e81b01d66d8bfb591277f8f96 |
|
24-Jul-2012 |
Nadav Rotem <nadav.rotem@intel.com> |
Clean whitespaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6c50551e9a555230f34e1abb467d575d8f11df19 |
|
29-Jun-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
CodeGenPrepare: Don't crash when TLI is not available. This happens when codegenprepare is invoked via opt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
06cb8ed00696eb14d1b831921452e50ec0568ea2 |
|
29-Jun-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h This was always part of the VMCore library out of necessity -- it deals entirely in the IR. The .cpp file in fact was already part of the VMCore library. This is just a mechanical move. I've tried to go through and re-apply the coding standard's preferred header sort, but at 40-ish files, I may have gotten some wrong. Please let me know if so. I'll be committing the corresponding updates to Clang and Polly, and Duncan has DragonEgg. Thanks to Bill and Eric for giving the green light for this bit of cleanup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
77c4ef8a47ef30d826bf56eb81d4059f4813ace1 |
|
06-May-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Switch the select to branch transformation on by default. The primitive conservative heuristic seems to give a slight overall improvement while not regressing stuff. Make it available to wider testing. If you notice any speed regressions (or significant code size regressions) let me know! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
59957500f94965f2ac69048f682ea983e96646c7 |
|
05-May-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
CodeGenPrepare: Add a transform to turn selects into branches in some cases. This came up when a change in block placement formed a cmov and slowed down a hot loop by 50%: ucomisd (%rdi), %xmm0 cmovbel %edx, %esi cmov is a really bad choice in this context because it doesn't get branch prediction. If we emit it as a branch, an out-of-order CPU can do a better job (if the branch is predicted right) and avoid waiting for the slow load+compare instruction to finish. Of course it won't help if the branch is unpredictable, but those are really rare in practice. This patch uses a dumb conservative heuristic, it turns all cmovs that have one use and a direct memory operand into branches. cmovs usually save some code size, so we disable the transform in -Os mode. In-Order architectures are unlikely to benefit as well, those are included in the "predictableSelectIsExpensive" flag. It would be better to reuse branch probability info here, but BPI doesn't support select instructions currently. It would make sense to use the same heuristics as the if-converter pass, which does the opposite direction of this transform. Test suite shows a small improvement here and there on corei7-level machines, but the actual results depend a lot on the used microarchitecture. The transformation is currently disabled by default and available by passing the -enable-cgp-select2branch flag to the code generator. Thanks to Chandler for the initial test case to him and Evan Cheng for providing me with comments and test-suite numbers that were more stable than mine :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156234 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6b980541df5846ad335c377c8803b517968daee2 |
|
24-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Refactor the interface to recursively simplifying instructions to be tad bit simpler by handling a common case explicitly. Also, refactor the implementation to use a worklist based walk of the recursive users, rather than trying to use value handles to detect and recover from RAUWs during the recursive descent. This fixes a very subtle bug in the previous implementation where degenerate control flow structures could cause mutually recursive instructions (PHI nodes) to collapse in just such a way that From became equal to To after some amount of recursion. At that point, we hit the inf-loop that the assert at the top attempted to guard against. This problem is defined away when not using value handles in this manner. There are lots of comments claiming that the WeakVH will protect against just this sort of error, but they're not accurate about the actual implementation of WeakVHs, which do still track RAUWs. I don't have any test case for the bug this fixes because it requires running the recursive simplification on unreachable phi nodes. I've no way to either run this or easily write an input that triggers it. It was found when using instruction simplification inside the inliner when running over the nightly test-suite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f210b68b41704cb602feffa4ebb334220abda407 |
|
13-Mar-2012 |
Pete Cooper <peter_cooper@apple.com> |
Target override to allow CodeGenPrepare to sink address operands to intrinsics in the same way it current does for loads and stores git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152666 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
e3e394d982a2bd2bc37edb1f8c3492d0382e37a9 |
|
04-Mar-2012 |
Bill Wendling <isanbard@gmail.com> |
Do trivial CSE of dead BBs during codegen preparation. Some BBs can become dead after codegen preparation. If we delete them here, it could help enable tail-call optimizations later on. <rdar://problem/10256573> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
164b86b4399559e45fab7846f1e3e09119cab4e2 |
|
20-Jan-2012 |
Kostya Serebryany <kcc@google.com> |
Extend Attributes to 64 bits Problem: LLVM needs more function attributes than currently available (32 bits). One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc). Solution: - extend the Attributes from 32 bits to 64-bits - wrap the object into a class so that unsigned is never erroneously used instead - change "unsigned" to "Attributes" throughout the code, including one place in clang. - the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking. - the class has "safe operator bool()" to support the common idiom: if (Attributes attr = getAttrs()) useAttrs(attr); - The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls - Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work. - Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit. Tested: "make check" on Linux (32-bit and 64-bit) and Mac (10.6) built/run spec CPU 2006 on Linux with clang -O2. This change will break clang build in lib/CodeGen/CGCall.cpp. The following patch will fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
618c1dbd293d15ee19f61b1156ab8086ad28311a |
|
01-Dec-2011 |
Chad Rosier <mcrosier@apple.com> |
Propagate TargetLibraryInfo throughout ConstantFolding.cpp and InstructionSimplify.cpp. Other fixups as needed. Part of rdar://10500969 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
48105286cbbe046d82d1a7e36a07d656d8ba2faf |
|
30-Sep-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Fold two identical set lookups into one. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a9390a4d5f5d568059a80970d22194b165d097a7 |
|
27-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit. If someone prefers %tmp42 to %42, run instnamer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
2048c379dd9e080c3e1bb0c93636da9564d8772c |
|
06-Sep-2011 |
Devang Patel <dpatel@apple.com> |
Use IRBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f56ea610ed63db0b8a8a9aca95222aa78ce293ee |
|
18-Aug-2011 |
Devang Patel <dpatel@apple.com> |
Dramatically speedup codegen prepare by a) avoiding use of dominator tree and b) doing a separate pass over dbg.value instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137908 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
5b6f42f57e730c2d968c313a27fa505a3c3e5efa |
|
16-Aug-2011 |
Bill Wendling <isanbard@gmail.com> |
Use the getFirstInsertionPt() method instead of getFirstNonPHI + an 'isa<>' check for a LandingPadInst. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
5e38c473a41f4412d8a934449290b11066d144b9 |
|
16-Aug-2011 |
Bill Wendling <isanbard@gmail.com> |
In places where it's using "getFirstNonPHI", skip the landingpad instruction if necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1178fb47018fea531c91ee04e39f30607122e763 |
|
15-Aug-2011 |
Bill Wendling <isanbard@gmail.com> |
Skip the insertion iterator past the landingpad instruction if there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e |
|
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
0ccc12ae8bab69d4ec8e265fff1865db9553137f |
|
29-May-2011 |
Nadav Rotem <nadav.rotem@intel.com> |
Fix warnings due to 132263; Thanks rdivacky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
2d6dcb34b7f39682f3eed08180631189fb4b6636 |
|
27-May-2011 |
Nadav Rotem <nadav.rotem@intel.com> |
Refactor getActionType and getTypeToTransformTo ; place all of the 'decision' code in one place. Re-apply 131534 and fix the multi-step promotion of integers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
b29c1d731a4c8aeab0d230d8dd3f0cff30b73d2f |
|
27-May-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Fix warning about || and && without explicit grouping. This looks like it flagged an actual bug. Devang, please review. I added the parentheses that change behavior, but make the behavior more closely match commit log's intent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132165 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
77ba0164fe631e573aec216dd44ea18a1cd76df4 |
|
27-May-2011 |
Devang Patel <dpatel@apple.com> |
Do not insert anything after terminator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132164 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9dd19667fb441f715f920156905b5217382d250c |
|
27-May-2011 |
Devang Patel <dpatel@apple.com> |
Do not move DBG_VALUE in middle of PHI nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
97de92c08d675e5ee5be2e1ebec64cbff86c17f4 |
|
26-May-2011 |
Devang Patel <dpatel@apple.com> |
If llvm.dbg.value and the value instruction it refers to are far apart then iSel may not be able to find corresponding Node for llvm.dbg.value during DAG construction. Make iSel's life easier by removing this distance between llvm.dbg.value and its value instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
5649ba70fb39f2fda4791d255ae8bb373071874f |
|
22-May-2011 |
Frits van Bommel <fvbommel@gmail.com> |
Add a parameter to ConstantFoldTerminator() that callers can use to ask it to also clean up the condition of any conditional terminator it folds to be unconditional, if that turns the condition into dead code. This just means it calls RecursivelyDeleteTriviallyDeadInstructions() in strategic spots. It defaults to the old behavior. I also changed -simplifycfg, -jump-threading and -codegenprepare to use this to produce slightly better code without any extra cleanup passes (AFAICT this was the only place in -simplifycfg where now-dead conditions of replaced terminators weren't being cleaned up). The only other user of this function is -sccp, but I didn't read that thoroughly enough to figure out whether it might be holding pointers to instructions that could be deleted by this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d6dde76090dd673a673ce363c982c22ea924502a |
|
18-May-2011 |
Duncan Sands <baldrick@free.fr> |
Revert commit 131534 since it seems to have broken several buildbots. Original log entry: Refactor getActionType and getTypeToTransformTo ; place all of the 'decision' code in one place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
fe3f5d7538954474731dbbed70430016600fa477 |
|
18-May-2011 |
Nadav Rotem <nadav.rotem@intel.com> |
Refactor getActionType and getTypeToTransformTo ; place all of the 'decision' code in one place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
0403b473dd99b5c7db1fa7048288be6cb42e7abd |
|
09-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
Fix a bug where RecursivelyDeleteTriviallyDeadInstructions could delete the instruction pointed to by CGP's current instruction iterator, leading to a crash on the testcase. This fixes PR9578. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
903548420016325db6d22328687f78cd4180facb |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Debug intrinsics must be skipped at the beginning and ends of blocks, lest they affect the generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
dc31cfeb74c46fe564a350ffd20880e61d04f286 |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
It is enough for the CallInst to have no uses to be made a tail call with a ret void; it doesn't need to have a void type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128212 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
52e37df8c05eb73e40421f0703c0d89fe854ffea |
|
24-Mar-2011 |
Devang Patel <dpatel@apple.com> |
s/UpdateDT/ModifiedDT/g git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6e8ffc1c4d73e6c91aca9ac28ef5859ead26e2b6 |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Do early taildup of ret in CodeGenPrepare for potential tail calls that have a void return type. This fixes PR9487. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4bae588c75fbd6d1b8401d83a94ba64fcc381d95 |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Use an early return instead of a long if block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128196 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
680c962ebddca67195463d9c5ff40d3cf888b5b4 |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
When UpdateDT is set, DT is invalid, which could cause problems when trying to use it later. I couldn't make a test that hits this with the current code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128195 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
661a390b830fcdea13ed9daeaf4e6dbd1adcdca6 |
|
24-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Check for TLI so that -codegenprepare can be used from opt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
485fafc8406db8552ba5e3ff871a6ee32694ad90 |
|
21-Mar-2011 |
Evan Cheng <evan.cheng@apple.com> |
Re-apply r127953 with fixes: eliminate empty return block if it has no predecessors; update dominator tree if cfg is modified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7a90e04fc76392972bd8bd0ddee5c934c22c1393 |
|
19-Mar-2011 |
Daniel Dunbar <daniel@zuster.org> |
Revert r127953, "SimplifyCFG has stopped duplicating returns into predecessors to canonicalize IR", it broke a lot of things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ae16d6b9722dd6ff4a606308e3a14d200f3a903f |
|
19-Mar-2011 |
Evan Cheng <evan.cheng@apple.com> |
SimplifyCFG has stopped duplicating returns into predecessors to canonicalize IR to have single return block (at least getting there) for optimizations. This is general goodness but it would prevent some tailcall optimizations. One specific case is code like this: int f1(void); int f2(void); int f3(void); int f4(void); int f5(void); int f6(void); int foo(int x) { switch(x) { case 1: return f1(); case 2: return f2(); case 3: return f3(); case 4: return f4(); case 5: return f5(); case 6: return f6(); } } => LBB0_2: ## %sw.bb callq _f1 popq %rbp ret LBB0_3: ## %sw.bb1 callq _f2 popq %rbp ret LBB0_4: ## %sw.bb3 callq _f3 popq %rbp ret This patch teaches codegenprep to duplicate returns when the return value is a phi and where the phi operands are produced by tail calls followed by an unconditional branch: sw.bb7: ; preds = %entry %call8 = tail call i32 @f5() nounwind br label %return sw.bb9: ; preds = %entry %call10 = tail call i32 @f6() nounwind br label %return return: %retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ] ret i32 %retval.0 This allows codegen to generate better code like this: LBB0_2: ## %sw.bb jmp _f1 ## TAILCALL LBB0_3: ## %sw.bb1 jmp _f2 ## TAILCALL LBB0_4: ## %sw.bb3 jmp _f3 ## TAILCALL rdar://9147433 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
899eaa35696bb0a9a625acd70a14876834af6cc5 |
|
11-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Roll r127459 back in: Optimize trivial branches in CodeGenPrepare, which often get created from the lowering of objectsize intrinsics. Unfortunately, a number of tests were relying on llc not optimizing trivial branches, so I had to add an option to allow them to continue to test what they originally tested. This fixes <rdar://problem/8785296> and <rdar://problem/9112893>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127498 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
950d3db5f478a84242a90cafce0d8dfc4f8b1152 |
|
11-Mar-2011 |
Daniel Dunbar <daniel@zuster.org> |
Revert r127459, "Optimize trivial branches in CodeGenPrepare, which often get created from the", it broke some GCC test suite tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127477 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
592ca3fda918c2066d9d78ed360e5fd69066fda7 |
|
11-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Optimize trivial branches in CodeGenPrepare, which often get created from the lowering of objectsize intrinsics. Unfortunately, a number of tests were relying on llc not optimizing trivial branches, so I had to add an option to allow them to continue to test what they originally tested. This fixes <rdar://problem/8785296> and <rdar://problem/9112893>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7c8d351d997655eb457bac5f810c219a9089594c |
|
05-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix PR9398 - 10% of llc compile time is spent in Value::getNumUses. This reduces the percentage of time spent in CodeGenPrepare when llcing 403.gcc from 12.6% to 1.8% of total llc time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3ccfbc201205a1a9765515dc8928ed8995daf9f4 |
|
02-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove some more unused code that I missed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
56e3793acf8099eafa36154d2b6c900d46b5965e |
|
02-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Eliminate the unused CodeGenPrepare option to split critical edges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4c078f0d6df6136cbbcf581c254869051d455fdc |
|
01-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Stop computing the number of uses twice per value in CodeGenPrepare's sinking of addressing code. On 403.gcc this almost halves CodeGenPrepare time and reduces total llc time by 9.5%. Unfortunately, getNumUses() is still the hottest function in llc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
435b4d2eba723e9513453f20885244ad1d16e0d4 |
|
18-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
fix rdar://8878965, a regression I introduced with the recent llvm.objectsize changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123771 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6ccb5ef1b504e71b63219437f5bcf4856207949b |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
temporarily revert r123526. While working on a follow-on patch I realize that ConstantFoldTerminator doesn't preserve dominfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
eeba3f5695e39ca970a7aeb161558575216005b2 |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
fix rdar://8785296 - -fcatch-undefined-behavior generates inefficient code The basic issue is that isel (very reasonably!) expects conditional branches to be folded, so CGP leaving around a bunch dead computation feeding conditional branches isn't such a good idea. Just fold branches on constants into unconditional branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123526 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1a8943a1f872a47b821fe7075f07b42403fa1a3f |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
simplify code, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123525 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
94e8e0cfbe13cdbdf7addc6e36df863cab92e4c9 |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Now that instruction optzns can update the iterator as they go, we can have objectsize folding recursively simplify away their result when it folds. It is important to catch this here, because otherwise we won't eliminate the cross-block values at isel and other times. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7579609bfe0d915b6c2d8dc094a132d793ec8855 |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
make the current instruction iterator an ivar, allowing xforms that potentially invalidate it (like inline asm lowering) to be sunk into their proper place, cleaning up a ton of code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
80f6a507d4e11ba066ad0e53e12ad25ad8cf07ba |
|
08-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Make more passes preserve dominators (or state that they preserve dominators if they all ready do). This removes two dominator recomputations prior to isel, which is a 1% improvement in total llc time for 403.gcc. The only potentially suspect thing is making GCStrategy recompute dominators if it used a custom lowering strategy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6cf34abe1c99e79565c75cd3e62755239463e574 |
|
06-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add the CallInst optimizations that don't involve expanding inline assembly to OptimizeInst() so that they can be used on a worklist instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
865ae1a9e77920e07c4a6a992736109c2cd4fe02 |
|
06-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Move the GEP handling in CodeGenPrepare to OptimizeInst(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
c061101e03ef6d2ca550f8fe71594a5e1c02e348 |
|
06-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Split the optimizations in CodeGenPrepare that don't manipulate the iterators into a separate function, so that it can be called from a loop using a worklist rather than a loop traversing a whole basic block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8c3527e7a475dd3369a485a4f610d56f7005b7b5 |
|
06-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Stop reallocating SunkAddrs for each basic block. When we move to an instruction worklist, the key will need to become std::pair<BasicBlock*, Value*>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
073057f0d0a1e21ab020fa71ff4bd11543faa6d0 |
|
05-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add some more statistics to CodeGenPrepare. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122891 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
31ff1333e0651192212cee6e090df2ff57d19b53 |
|
05-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add some stats to CodeGenPrepare to make it easier to speed it up without regressing code quality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
95bb00414eba82cc1c058b558cd28bc28134c561 |
|
04-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Avoid finding loop back edges when we are not splitting critical edges in CodeGenPrepare (which is the default behavior). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7cb4fa20b5534decf527a6bfcc74bd79ea11cbb1 |
|
03-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Switch a worklist in CodeGenPrepare to SmallVector and increase the inline capacity on the Visited SmallPtrSet. On 403.gcc, this is about a 4.5% speedup of CodeGenPrepare time (which itself is 10% of time spent in the backend). This is progress towards PR8889. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d5f8684b16057df73771b23e293b400cb327e079 |
|
23-Dec-2010 |
Owen Anderson <resistor@mac.com> |
It is possible for SimplifyCFG to cause PHI nodes to become redundant too late in the optimization pipeline to be caught by instcombine, and it's not feasible to catch them in SimplifyCFG because the use-lists are in an inconsistent state at the point where it could know that it need to simplify them. Instead, have CodeGenPrepare look for trivially redundant PHIs as part of its general cleanup effort. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a0d172f7fec17bcbc0b0681b42b8c6192072eea0 |
|
19-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
revert r122164, I'm going to go with a different approach. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
140f4a315b4b1bb5402a78b37756aa6c212ed390 |
|
19-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
first step to fixing PR8642: don't fold away empty basic blocks which have trapping constant exprs in them due to PHI nodes. Eliminating them can cause the constant expr to be evalutated on new paths if the input edges are critical. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122164 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
35bf4d6d8018160557a92b86181acbcef76f86eb |
|
27-Nov-2010 |
Owen Anderson <resistor@mac.com> |
Second attempt at fixing the performance regressions introduced by my recent GVN improvement. Looking through a single layer of PHI nodes when attempting to sink GEPs, we need to iteratively look through arbitrary PHI nests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d2f4174fcc69a3328076734fa3256b31e5b7f734 |
|
19-Nov-2010 |
Owen Anderson <resistor@mac.com> |
When folding addressing modes in CodeGenPrepare, attempt to look through PHI nodes if all the operands of the PHI are equivalent. This allows CodeGenPrepare to undo unprofitable PRE transforms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
44ab89eb376af838d1123293a79975aede501464 |
|
29-Oct-2010 |
John Thompson <John.Thompson.JTSoftware@gmail.com> |
Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
081c34b725980f995be9080eaec24cd3dfaaf065 |
|
19-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ce665bd2e2b581ab0858d1afe359192bac96b868 |
|
08-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7eb589d3f9294dbfe4d5205045bd8119a9666532 |
|
30-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Try again to disable critical edge splitting in CodeGenPrepare. The bug that broke i386 linux has been fixed in r115191. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115204 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
08342f2d11caf484bce394f9513ebc2b4a0498d5 |
|
27-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert "Disable codegen prepare critical edge splitting. Machine instruction passes now" This reverts revision 114633. It was breaking llvm-gcc-i386-linux-selfhost. It seems there is a downstream bug that is exposed by -cgp-critical-edge-splitting=0. When that bug is fixed, this patch can go back in. Note that the changes to tailcallfp2.ll are not reverted. They were good are required. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
dd3a41a6b35f24d57fd3aba9043bd5321cce0cdb |
|
23-Sep-2010 |
Evan Cheng <evan.cheng@apple.com> |
Disable codegen prepare critical edge splitting. Machine instruction passes now break critical edges on demand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114633 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ec57a1acec7803fff2faa54c6ea8fec2be01aeb9 |
|
22-Sep-2010 |
Bob Wilson <bob.wilson@apple.com> |
When moving zext/sext to be folded with a load, ignore the issue of whether truncates are free only in the case where the extended type is legal but the load type is not. If both types are illegal, such as when they are too big, the load may not be legalized into an extended load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
71dc4d96ed39fadcdccf8c578d49a1afdae0c6ba |
|
21-Sep-2010 |
Bob Wilson <bob.wilson@apple.com> |
Move a sign-extend or a zero-extend of a load to the same basic block as the load when the type of the load is not legal, even if truncates are not free. The load is going to be legalized to an extending load anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9120f5c35b756e0b9d7747616e97df8f30edfcc8 |
|
21-Sep-2010 |
Bob Wilson <bob.wilson@apple.com> |
Clarify a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
677c6ecd0804c247eb727a830b50cd6537a6c12c |
|
16-Sep-2010 |
Dale Johannesen <dalej@apple.com> |
When substituting sunkaddrs into indirect arguments an asm, we were walking the asm arguments once and stashing their Values. This is wrong because the same memory location can be in the list twice, and if the first one has a sunkaddr substituted, the stashed value for the second one will be wrong (use-after-free). PR 8154. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
330444e52b1c0eea3c897606125babbea2b3cd59 |
|
13-Sep-2010 |
Eric Christopher <echristo@apple.com> |
Remove unused variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113769 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
eac6e1d0c748afc3d1496be0753ffbe5f5a4279b |
|
13-Sep-2010 |
John Thompson <John.Thompson.JTSoftware@gmail.com> |
Added skeleton for inline asm multiple alternative constraint support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
aafe626c7fa9f99150cccd27d0151a2cf7c8c00b |
|
26-Aug-2010 |
Chris Lattner <sabre@nondot.org> |
remove some llvmcontext arguments that are now dead post-refactoring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170 |
|
17-Aug-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add an option to disable codegen prepare critical edge splitting. In theory, PHI elimination is already doing all (most?) of the splitting needed. But machine-licm and machine-sink seem to miss some important optimizations when splitting is disabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111224 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
90c579de5a383cee278acc3f7e7b9d0a656e6a35 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1f74590e9d1b9cf0f1f81a156efea73f76546e05 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9ccaf53ada99c63737547c0235baeb8454b04e80 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 |
|
22-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a6aac4c5bc22bb10c7adb11eee3f82c703af7002 |
|
16-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
eliminate CallInst::ArgOffset git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6e1f330c4cb81c5495c6fd7105cd294c8079ead9 |
|
30-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use getArgOperand (corrected by CallInst::ArgOffset) instead of getOperand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107273 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1784d160e4efa75782884d451d0788b9457e67dc |
|
25-Jun-2010 |
Dale Johannesen <dalej@apple.com> |
The hasMemory argument is irrelevant to how the argument for an "i" constraint should get lowered; PR 6309. While this argument was passed around a lot, this is the only place it was used, so it goes away from a lot of other places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
de9f5452d3ae894bb7fdd455cec5af50e2560aa5 |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106707 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
551754c4958086cc6910da7c950f2875e212f5cf |
|
17-Apr-2010 |
Eric Christopher <echristo@apple.com> |
Revert 101465, it broke internal OpenGL testing. Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4ec2258ffb495d7ce00177e447740ef1123a27db |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101434 with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
607a7ab3da72a2eb53553a520507cbb8068dd1d8 |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101423 and r101397, they break llvm-gcc self-host on darwin10 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8db3f2c2ab563167e60ef88cd13445d9a0f07333 |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
shift intrinsic operand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
536d31b5b391ee76eae33f4756f6442bf10b2d72 |
|
31-Mar-2010 |
Dale Johannesen <dalej@apple.com> |
Fix a nasty dangling-pointer heisenbug that could generate wrong code pretty much anywhere AFAICT. A case that hits the bug reproducibly is impossible, but the situation was like this: Addr = ... Store -> Addr Addr2 = GEP , 0, 0 Store -> Addr2 Handling the first store, the code changed replaced Addr with a sunkaddr and deleted Addr, but not its table entry. Code in OptimizedBlock replaced Addr2 with a bitcast; if that happened to reuse the memory of Addr, the old table entry was erroneously found when handling the second store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
60ad781c61815ca5b8dc2a45a102e1c8af65992f |
|
26-Mar-2010 |
Gabor Greif <ggreif@gmail.com> |
rename use_const_iterator to const_use_iterator for consistency's sake git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
0b6cb507385c8bd10b6a51b5e45a9b99d8d94798 |
|
12-Mar-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Factor checked library call optimization into a common helper class and use it to unify the almost identical code in CodeGenPrepare and InstCombineCalls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7fa30b8e5d2774867787a4e4db17bf27358e5aac |
|
11-Mar-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
stpcpy is so similar to strcpy, it doesn't deserve a complete copy of the __strcpy_chk -> strcpy code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
19888ca8b4bfcb4aabc957de3f5dce03f84da00c |
|
11-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Lower stpcpy_chk when possible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98274 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
040056fd11693ffc41ce9b777281c71705d0dc1f |
|
11-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Do some final lowering in CodeGenPrepare of _chk calls similar to that in InstCombineCalls. More call lowering needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1df9859c40492511b8aa4321eb76496005d3b75b |
|
16-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
There are two ways of checking for a given type, for example isa<PointerType>(T) and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
c09687bb7ea35e0dc9d709460c83a58e6076e4d2 |
|
13-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
remove dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96109 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
98d5c3141eddc84a8bcf7db57332967695585e42 |
|
13-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
Split some code out to a helper function (FindReusablePredBB) and add a doxygen comment. Cache the phi entry to avoid doing tons of PHINode::getBasicBlockIndex calls in the common case. On my insane testcase from re2c, this speeds up CGP from 617.4s to 7.9s (78x). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96083 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3f65b5e733e01faeb9db825515ca00e544fb988a |
|
13-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
speed up CGP a bit by scanning predecessors through phi operands instead of with pred_begin/end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
aa0e52328747d982d6c6e501a205832ad724ff62 |
|
05-Feb-2010 |
Dan Gohman <gohman@apple.com> |
Implement releaseMemory in CodeGenPrepare and free the BackEdges container data. This prevents it from holding onto dangling pointers and potentially behaving unpredictably. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d8d0b6a42c09f1c5b00a4e7029b08074a3da5acd |
|
19-Jan-2010 |
Dan Gohman <gohman@apple.com> |
When doing address-mode sinking, expand the base register first, rather than the scaled register. This makes it more likely that subsequent AddrModeMatcher queries will match the new address the same way as the old, instead of accidentally matching what had been the base register as the new scaled register, and then failing to match the scaled register. This fixes some problems with address-mode sinking multiple muls into a block, which will be a lot more common with some upcoming LoopStrengthReduction changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93935 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
68d67fdf203ff2d5b0eeb925befd0866bce3acee |
|
05-Jan-2010 |
David Greene <greened@obbligato.org> |
Change errs() to dbgs(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
04149f7ffd033773adfe85e4acf3f560e29bd47d |
|
17-Dec-2009 |
Evan Cheng <evan.cheng@apple.com> |
Revert 91280-91283, 91286-91289, 91291, 91293, 91295-91296. It apparently introduced a non-deterministic behavior in the optimizer somewhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91598 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
87f8e4902757e8dfdecb0056f530755d61a35adb |
|
08-Dec-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove unnecessary #include "llvm/LLVMContext.h". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90836 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4a8ee23a8181f668dc294b417f67e1675ad391ab |
|
03-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Fix a comment typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a4b04210d4a838e5a48b0c128bdfe42c3055633f |
|
31-Oct-2009 |
Chris Lattner <sabre@nondot.org> |
llvm::SplitEdge should refuse to split an edge from an indirectbr. Fix CodeGenPrepare to not try to split edges from indirectbr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
b00f236b03ea57520f94823780896ebdbc5d8bdc |
|
16-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Move zext and sext casts fed by loads into the same block as the load, to help SelectionDAG fold them into the loads, unless conditions are unfavorable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ad80981a106c9d0ec83351e63ee3ac75ed646bf4 |
|
16-Sep-2009 |
Andreas Neustifter <astifter-llvm@gmx.at> |
Preserve ProfileInfo during CodeGenPrepare. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3e8b6631e67e01e4960a7ba4668a50c596607473 |
|
02-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1c8a23c440b1665ba422778cdc74a0c59ecaf39e |
|
26-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Eliminate the unused Context argument on one of the ICmpInst and FCmpInst constructors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80049 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
bdff548e4dd577a72094d57b282de4e765643b96 |
|
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate the "Value" printing methods that print to a std::ostream. This required converting a bunch of stuff off DOUT and other cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1d0be15f89cb5056e20e2d24faa8d6afb1573bca |
|
13-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Push LLVMContexts through the IntegerType APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
23b9b19b1a5a00faa9fce0788155c7dbfd00bfb1 |
|
12-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78759 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
e50ed30282bb5b4a9ed952580523f2dda16215ac |
|
11-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a7235ea7245028a0723e8ab7fd011386b3900777 |
|
31-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are metadata related, which I'm waiting on to avoid conflicting with Devang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6c1980b3357207c4d756255bc5e32323eac278dc |
|
25-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Convert a few more uses of llvm/Support/Streams.h to raw_ostream. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
eed707b1e6097aac2bb6b3d47271f6300ace7f2e |
|
25-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
e922c0201916e0b980ab3cfe91e1413e68d55647 |
|
22-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Get rid of the Pass+Context magic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8850b36d0fdd2ddde3cc409a8496ace544e42185 |
|
20-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
use ExpandInlineAsm on TargetLowering instead of TargetAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
333c40096561218bc3597cf153c0a3895274414c |
|
10-Jul-2009 |
Owen Anderson <resistor@mac.com> |
This started as a small change, I swear. Unfortunately, lots of things call the [I|F]CmpInst constructors. Who knew!? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d672ecb0178c6247a5eaa5b0fb0c3b23cd25bd7c |
|
03-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Convert the first batch of passes to use LLVMContext. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74748 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a119de86a064414622562cfe32953de7f9b0ee40 |
|
15-Jun-2009 |
Dan Gohman <gohman@apple.com> |
Fix old-style type names in comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8b0d4f61bbe07060a4638ae1d3731dec09d13854 |
|
02-Jun-2009 |
Dan Gohman <gohman@apple.com> |
Fix CodeGenPrepare's address-mode sinking to handle unusual addresses, involving Base values which do not have Pointer type. This fixes PR4297. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
fe095f39e7009c51d1c86769792ccbcad8cdd2ec |
|
04-May-2009 |
Mike Stump <mrs@apple.com> |
Restore minor deletion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70892 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
683b08cf7c47dd3ec1d898efa02ec0780b080de5 |
|
07-Apr-2009 |
Chris Lattner <sabre@nondot.org> |
remove empty section git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68485 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
2d69724938e67ec248e0ba42f86287923b3a5171 |
|
27-Mar-2009 |
Dale Johannesen <dalej@apple.com> |
One more place to skip debug info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6aae1d6582fe8519c42d9774d670bb93c78e9637 |
|
26-Mar-2009 |
Dale Johannesen <dalej@apple.com> |
Skip debug info one more place. (This one gets called from llc, not opt, but it's an IR level optimization nevertheless.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67724 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
fc0b80d9746e5fd4b45057ab814c67371fb0f9ea |
|
13-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR3784: If the source of a phi comes from a bb ended with an invoke, make sure the copy is inserted before the try range (unless it's used as an input to the invoke, then insert it after the last use), not at the end of the bb. Also re-apply r66140 which was disabled as a workaround. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
58256f83c86d85df24874db0db78b0bc972d6258 |
|
12-Mar-2009 |
Duncan Sands <baldrick@free.fr> |
Revert commit 66140 since it caused several failures in the Ada testcase. Reverting this only covers up the real problem, which is a nasty conceptual difficulty in the phi elimination pass: when eliminating phi nodes in landing pads, the register copies need to come before the invoke, not at the end of the basic block which is too late... See PR3784. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6fb8f421eef59c454dba3688aade34ca1401dff2 |
|
05-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
Do not split edges to EH landing pads. It will cause code size explosion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a1fd5b386dd8eb4c86bfd2b9659c219a1c4f56db |
|
20-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Factor address mode matcher out of codegen prepare to make it available to other passes, e.g. loop strength reduction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
03ce042d70c423a41edca0714112a0e06b16493b |
|
13-Feb-2009 |
Dan Gohman <gohman@apple.com> |
In CodeGenPrepare's debug output, use WriteAsOperand instead of printing getName(), so that unnamed values are printed correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
65c02fbf9bda089398a67c887e32a99799afa522 |
|
12-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
fix PR3537: if resetting bbi back to the start of a block, we need to forget about already inserted expressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a36791da41cf4f635e50077b290676b873836bda |
|
23-Jan-2009 |
Gabor Greif <ggreif@gmail.com> |
Simplify the logic of getting hold of a PHI predecessor block. There is now a direct way from value-use-iterator to incoming block in PHINode's API. This way we avoid the iterator->index->iterator trip, and especially the costly getOperandNo() invocation. Additionally there is now an assertion that the iterator really refers to one of the PHI's Uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d62284a8040024afeb8777b514c34912e939b801 |
|
18-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Fix rdar://6505632, an llc crash on 483.xalancbmk git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 |
|
12-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Rename getABITypeSize to getTypePaddedSize, as suggested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7e66c0d43aefce78948f0b73422f6e5bb28e2077 |
|
05-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Find loop back edges only after empty blocks are eliminated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ab63152871f4144050d0a58d592a95e089fe40d4 |
|
19-Dec-2008 |
Evan Cheng <evan.cheng@apple.com> |
- CodeGenPrepare does not split loop back edges but it only knows about back edges of single block loops. It now does a DFS walk to find loop back edges. - Use SplitBlockPredecessors to factor out common predecessors of the critical edge destination. This is disabled for now due to some regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f5102a0f088e7c96f7028bf7ca1c24975c314fff |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
don't call MergeBasicBlockIntoOnlyPred on a block whose only predecessor is itself. This doesn't make sense, and this is a dead infinite loop anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60210 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3481f24c06b3c9de48bdd99c37547471ca8e761e |
|
27-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
remove doConstantPropagation and dceInstruction, they are just wrappers around the interesting code and use an obscure iterator abstraction that dates back many many years. Move EraseDeadInstructions to Transforms/Utils and name it RecursivelyDeleteTriviallyDeadInstructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9918fb5631974f2201a640384b7ebe672c749e43 |
|
27-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
defensive patch: if CGP is merging a block with the entry block, make sure it ends up being the entry block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3c4f8b91eff129f25327a03634da5386962b9d84 |
|
27-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Use the new MergeBasicBlockIntoOnlyPred function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60163 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ab8b794a789390ca2f1ad5372d4813911e306663 |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Turn on my codegen prepare heuristic by default. It doesn't affect performance in most cases on the Grawp tester, but does speed some things up (like shootout/hash by 15%). This also doesn't impact compile time in a noticable way on the Grawp tester. It also, of course, gets the testcase it was designed for right :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60120 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
695d8ec33b4303d05b3142fdfd78751193df9c4c |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
teach the new heuristic how to handle inline asm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
896617b776e7b015346160645b19be776cbe3805 |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Improve ValueAlreadyLiveAtInst with a cheap and dirty, but effective heuristic: the value is already live at the new memory operation if it is used by some other instruction in the memop's block. This is cheap and simple to compute (moreso than full liveness). This improves the new heuristic even more. For example, it cuts two out of three new instructions out of 255.vortex:DbmFileInGrpHdr, which is one of the functions that the heuristic regressed. This overall eliminates another 40 instructions from 403.gcc and visibly reduces register pressure in 255.vortex (though this only actually ends up saving the 2 instructions from the whole program). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
84d1b40d448663050f12fb4dee052db907ac4748 |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Start rewroking a subpiece of the profitability heuristic to be phrased in terms of liveness instead of as a horrible hack. :) In pratice, this doesn't change the generated code for either 255.vortex or 403.gcc, but it could cause minor code changes in theory. This is framework for coming changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
653b2581df384f5442ef2438b11864576e6b549b |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
add a comment, make save/restore logic more obvious. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
5eecb7f164a926540bc1bdffc7df81ab4ddce710 |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
This adds in some code (currently disabled unless you pass -enable-smarter-addr-folding to llc) that gives CGP a better cost model for when to sink computations into addressing modes. The basic observation is that sinking increases register pressure when part of the addr computation has to be available for other reasons, such as having a use that is a non-memory operation. In cases where it works, it can substantially reduce register pressure. This code is currently an overall win on 403.gcc and 255.vortex (the two things I've been looking at), but there are several things I want to do before enabling it by default: 1. This isn't doing any caching of results, so it is much slower than it could be. It currently slows down release-asserts llc by 1.7% on 176.gcc: 27.12s -> 27.60s. 2. This doesn't think about inline asm memory operands yet. 3. The cost model botches the case when the needed value is live across the computation for other reasons. I'll continue poking at this, and eventually turn it on as llcbeta. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60074 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
2efbbb38ba7b9601202f2271301f07195dea8959 |
|
26-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Teach CodeGenPrepare to look through Bitcast instructions when attempting to optimize addressing modes. This allows us to optimize things like isel-sink2.ll into: movl 4(%esp), %eax cmpb $0, 4(%eax) jne LBB1_2 ## F LBB1_1: ## TB movl $4, %eax ret LBB1_2: ## F movzbl 7(%eax), %eax ret instead of: _test: movl 4(%esp), %eax cmpb $0, 4(%eax) leal 4(%eax), %eax jne LBB1_2 ## F LBB1_1: ## TB movl $4, %eax ret LBB1_2: ## F movzbl 3(%eax), %eax ret This shrinks (e.g.) 403.gcc from 1133510 to 1128345 lines of .s. Note that the 2008-10-16-SpillerBug.ll testcase is dubious at best, I doubt it is really testing what it thinks it is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3b48501adc540c834fe33bf2695377c7e1189d3c |
|
25-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Teach MatchScaledValue to handle Scales by 1 with MatchAddr (which can recursively match things) and scales by 0 by ignoring them. This triggers once in 403.gcc, saving 1 (!!!!) instruction in the whole huge app. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
88a5c832ac71eb31d2b1bc143817af9248f4c549 |
|
25-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
significantly refactor all the addressing mode matching logic into a new AddressingModeMatcher class. This makes it easier to reason about and reduces passing around of stuff, but has no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
bb3204a440e3cf5f9bd44f05d34f99b7450341e6 |
|
25-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
refactor all the constantexpr/instruction handling code out into a new FindMaximalLegalAddressingModeForOperation helper method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7ad1c7342bb6619ebf13284377e2b479830d096f |
|
25-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
another minor tweak git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
088a1e84ea985a22efcf907d7789064fee3a97b9 |
|
25-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
minor cleanups no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
85fa13c02d383bb87dd9b8b9081a4d34a3e9c52c |
|
24-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
rearrange and tidy some code, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4744d85c50363ad60fe1767877fb0875e09c6b11 |
|
24-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
minor cleanups to debug code, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59989 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ae297f8da5a354f75a30dc5689a88615ded05676 |
|
24-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
reenable the right part of the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7f2d6efbaa763654d91a70ed3a9a8d6a9da3a82c |
|
24-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
revert an accidental commit, this fixes the regression on test/CodeGen/X86/isel-sink.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
47f5751c8092f96b989318faab991b23e558babf |
|
24-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Fix 3113: If we have a dead cyclic PHI, replace the whole thing with an undef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a7e6146688f4b1f0f0651af4df4994e78d438377 |
|
24-Sep-2008 |
Evan Cheng <evan.cheng@apple.com> |
Commit CodeGenPrepare.cpp changes which was accidentially left out of 56526. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
692bf6b85e0eaed549cd47d67289ab7b28e32651 |
|
24-Sep-2008 |
Eric Christopher <echristo@apple.com> |
Fix fallout in CodeGenPrepare from 56526. Will likely need more work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56546 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ae73dc1448d25b02cabc7c64c86c64371453dda8 |
|
04-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Tidy up several unbeseeming casts from pointer to intptr_t. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
475871a144eb604ddaf37503397ba0941442e5fb |
|
27-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Rename SDOperand to SDValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
8e4eb09b1e3571965f49edcdfb56b1375b1b7551 |
|
08-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Remove comparison methods for MVT. The main cause of apint codegen failure is the DAG combiner doing the wrong thing because it was comparing MVT's using < rather than comparing the number of bits. Removing the < method makes this mistake impossible to commit. Instead, add helper methods for comparing bits and use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
83ec4b6711980242ef3c55a4fa36b2d7a39c1bfb |
|
06-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Wrap MVT::ValueType in a struct to get type safety and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
02dea8b39f3acad5de1df36273444d149145e7fc |
|
23-May-2008 |
Dan Gohman <gohman@apple.com> |
Tidy up BasicBlock::getFirstNonPHI, and change a bunch of places to use it instead of duplicating its functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
7cbd8a3e92221437048b484d5ef9c0a22d0f8c58 |
|
16-May-2008 |
Gabor Greif <ggreif@gmail.com> |
API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
844731a7f1909f55935e3514c9e713a62d67662e |
|
13-May-2008 |
Dan Gohman <gohman@apple.com> |
Clean up the use of static and anonymous namespaces. This turned up several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
a8a118b68fa3ca1632e7280cd6994aa0f8f1eec1 |
|
08-May-2008 |
Gordon Henriksen <gordonhenriksen@mac.com> |
Improve pass documentation and comments. Patch by Matthijs Kooijman! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
5a09690446a36f94f990db7d18d9b9ac8587888a |
|
27-Apr-2008 |
Chris Lattner <sabre@nondot.org> |
Implement a signficant optimization for inline asm: When choosing between constraints with multiple options, like "ir", test to see if we can use the 'i' constraint and go with that if possible. This produces more optimal ASM in all cases (sparing a register and an instruction to load it), and fixes inline asm like this: void test () { asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14)); } Previously we would dump "42" into a memory location (which is ok for the 'm' constraint) which would cause a problem because the 'c' modifier is not valid on memory operands. Isn't it great how inline asm turns 'missed optimization' into 'compile failed'?? Incidentally, this was the todo in PowerPC/2007-04-24-InlineAsm-I-Modifier.ll Please do NOT pull this into Tak. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50315 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4376fea6631d41fff3f2a7c6186faed9eff59619 |
|
27-Apr-2008 |
Chris Lattner <sabre@nondot.org> |
Move a bunch of inline asm code out of line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
23ce502cb7d9d06a1786d276a10be42e65759eca |
|
25-Apr-2008 |
Dan Gohman <gohman@apple.com> |
Remove the code from CodeGenPrepare that moved getresult instructions to the block that defines their operands. This doesn't work in the case that the operand is an invoke, because invoke is a terminator and must be the last instruction in a block. Replace it with support in SelectionDAGISel for copying struct values into sequences of virtual registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
0c80c75783c2bcc73268dd10492d9f0d000731d0 |
|
06-Apr-2008 |
Chris Lattner <sabre@nondot.org> |
silence a warning when assertions are disabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f1d3d666c14b67b962e81dbaac18da9116e79fa8 |
|
21-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Handle getresult instructions in different basic blocks from their aggregate operands by moving the getresult instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
55e641b766a18878b51551d626d5a566102e487e |
|
19-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Remove dead options. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
53bdbd756581a9a1d6d381059f103c5f3c687bb6 |
|
26-Feb-2008 |
Gabor Greif <ggreif@gmail.com> |
fix http://llvm.org/bugs/show_bug.cgi?id=2097 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9ec8095485c994522c9a50e16fc029de94c20476 |
|
26-Feb-2008 |
Eli Friedman <eli.friedman@gmail.com> |
Fix for pr2093: direct operands aren't necessarily addresses, so don't try to simplify them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9bf12b5583104c810cfadcdce91edf9efad79973 |
|
26-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR2076. CodeGenPrepare now sinks address computation for inline asm memory operands into inline asm block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47589 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
e003813e9613f41ff2c6a10cb1d3ae3a5b8eab1f |
|
20-Jan-2008 |
Duncan Sands <baldrick@free.fr> |
Make sure the caller doesn't use freed memory. Fixes PR1935. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46203 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
4ee451de366474b9c228b4e5fa573795a715216d |
|
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Remove attribution from file headers, per discussion on llvmdev. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ff26ab227713afdd6f54f1b539df10cbe8f481e5 |
|
25-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Don't break critical edges for single-bb loops, this helps with PR1877, though it is only a partial fix. This change is noise for most programs, but speeds up Shootout-C++/matrix by 20%, Ptrdist/ks by 24%, smg2000 by 8%, hexxagon by 9%, bzip2 by 9% (not sure I trust this), ackerman by 13%, etc. OTOH, it slows down Shootout/fib2 by 40% (I'll update PR1877 with this info). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ebe807597f3ee67f6c5f9cd462ba325b579a2680 |
|
24-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
add a -backedge-hack llc-beta option to codegenprepare. When specified, don't split backedges of single-bb loops. This helps address PR1877 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
696e5c047bd06bf6b7b5471b3f4dec319b43628b |
|
13-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f9785f92b630e69262c395b2fc0893451169d68b |
|
13-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Be extra careful with extension use optimation. Now turned on by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
765dff258545f019502023045b471443ff9ef6c4 |
|
12-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Don't muck with phi nodes; bug fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
772de516b6851e679d3da9e5171712b9c3122019 |
|
12-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Bug fix. Only safe to perform extension uses optimization if the source of extension is also defined in the same BB as the extension. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
bdcb726fcad1e3fddc70847a2b91d4d4f9396938 |
|
06-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
If both result of the {s|z}xt and its source are live out, rewrite all uses of the source with result of extension. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f67f73a519eac94b6c1f98dbce7d251a3a4aea07 |
|
06-Nov-2007 |
Chris Lattner <sabre@nondot.org> |
fix const correctness, BB is const, so its predecessors are too git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
514ab348fddcdffa8367685dc608b2f8d5de986d |
|
01-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize. The meaning of getTypeSize was not clear - clarifying it is important now that we have x86 long double and arbitrary precision integers. The issue with long double is that it requires 80 bits, and this is not a multiple of its alignment. This gives a primitive type for which getTypeSize differed from getABITypeSize. For arbitrary precision integers it is even worse: there is the minimum number of bits needed to hold the type (eg: 36 for an i36), the maximum number of bits that will be overwriten when storing the type (40 bits for i36) and the ABI size (i.e. the storage size rounded up to a multiple of the alignment; 64 bits for i36). This patch removes getTypeSize (not really - it is still there but deprecated to allow for a gradual transition). Instead there is: (1) getTypeSizeInBits - a number of bits that suffices to hold all values of the type. For a primitive type, this is the minimum number of bits. For an i36 this is 36 bits. For x86 long double it is 80. This corresponds to gcc's TYPE_PRECISION. (2) getTypeStoreSizeInBits - the maximum number of bits that is written when storing the type (or read when reading it). For an i36 this is 40 bits, for an x86 long double it is 80 bits. This is the size alias analysis is interested in (getTypeStoreSize returns the number of bytes). There doesn't seem to be anything corresponding to this in gcc. (3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded up to a multiple of the alignment. For an i36 this is 64, for an x86 long double this is 96 or 128 depending on the OS. This is the spacing between consecutive elements when you form an array out of this type (getABITypeSize returns the number of bytes). This is TYPE_SIZE in gcc. Since successive elements in a SequentialType (arrays, pointers and vectors) need to be aligned, the spacing between them will be given by getABITypeSize. This means that the size of an array is the length times the getABITypeSize. It also means that GEP computations need to use getABITypeSize when computing offsets. Furthermore, if an alloca allocates several elements at once then these too need to be aligned, so the size of the alloca has to be the number of elements multiplied by getABITypeSize. Logically speaking this doesn't have to be the case when allocating just one element, but it is simpler to also use getABITypeSize in this case. So alloca's and mallocs should use getABITypeSize. Finally, since gcc's only notion of size is that given by getABITypeSize, if you want to output assembler etc the same as gcc then getABITypeSize is the size you want. Since a store will overwrite no more than getTypeStoreSize bytes, and a read will read no more than that many bytes, this is the notion of size appropriate for alias analysis calculations. In this patch I have corrected all type size uses except some of those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard cases). I will get around to auditing these too at some point, but I could do with some help. Finally, I made one change which I think wise but others might consider pointless and suboptimal: in an unpacked struct the amount of space allocated for a field is now given by the ABI size rather than getTypeStoreSize. I did this because every other place that reserves memory for a type (eg: alloca) now uses getABITypeSize, and I didn't want to make an exception for unpacked structs, i.e. I did it to make things more uniform. This only effects structs containing long doubles and arbitrary precision integers. If someone wants to pack these types more tightly they can always use a packed struct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
684b22df79c51114a12289e10a4063d5f02259a9 |
|
02-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
wrap some long lines. Major offenders that are left include gvn, gvnpre, dse, and predsimplify. To see these, use: make check-line-length git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
c2bbfc18e9adbbdcf5b3375d8d25e2452f7df7f1 |
|
01-Aug-2007 |
Dan Gohman <gohman@apple.com> |
More explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ce0b23721e434789f9600c0fd13f0ca17444264f |
|
12-Jun-2007 |
Dale Johannesen <dalej@apple.com> |
Sink CmpInst's to their uses to reduce register pressure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
6603a1bff0e25e1d9f7be08c65c7b584c7bb84d7 |
|
08-May-2007 |
Dale Johannesen <dalej@apple.com> |
Don't generate branch to entry block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
ecd94c804a563f2a86572dcf1d2e81f397e19daa |
|
06-May-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Fix typo in comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
1997473cf72957d0e70322e2fe6fe2ab141c58a6 |
|
03-May-2007 |
Devang Patel <dpatel@apple.com> |
Drop 'const' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
3e15bf33e024b9df9e89351a165acfdb1dde51ed |
|
02-May-2007 |
Devang Patel <dpatel@apple.com> |
Use 'static const char' instead of 'static const int'. Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
794fd75c67a2cdc128d67342c6d88a504d186896 |
|
01-May-2007 |
Devang Patel <dpatel@apple.com> |
Do not use typeinfo to identify pass in pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
75abc1ed0618048c3cf6c5b71c9868c10d6c1478 |
|
25-Apr-2007 |
Devang Patel <dpatel@apple.com> |
Fix http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070423/048376.html git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36417 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
f25646bfb375b614cddcc8b6fda2b524feae1efa |
|
14-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
use an accessor to simplify code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
dd77df3cbc2301c14f56c9d2cfd412a032c27241 |
|
13-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Completely rewrite addressing-mode related sinking of code. In particular, this fixes problems where codegenprepare would sink expressions into load/stores that are not valid, and fixes cases where it would miss important valid ones. This fixes several serious codesize and perf issues, particularly on targets with complex addressing modes like arm and x86. For example, now we compile CodeGen/X86/isel-sink.ll to: _test: movl 8(%esp), %eax movl 4(%esp), %ecx cmpl $1233, %eax ja LBB1_2 #F LBB1_1: #T movl $4, (%ecx,%eax,4) movl $141, %eax ret LBB1_2: #F movl (%ecx,%eax,4), %eax ret instead of: _test: movl 8(%esp), %eax leal (,%eax,4), %ecx addl 4(%esp), %ecx cmpl $1233, %eax ja LBB1_2 #F LBB1_1: #T movl $4, (%ecx) movl $141, %eax ret LBB1_2: #F movl (%ecx), %eax ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35970 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
9fda270e2ce31dafb29605612119242ffa838511 |
|
10-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
eliminate the last uses of some TLI methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
d9c3a0d7cce72ac802516483c4a325b3b31bbc0e |
|
02-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Various passes before isel split edges and do other CFG-restructuring changes. isel has its own particular features that it wants in the CFG, in order to reduce the number of times a constant is computed, etc. Make sure that we clean up the CFG before doing any other things for isel. Doing so can dramatically reduce the number of split edges and reduce the number of places that constants get computed. For example, this shrinks CodeGen/Generic/phi-immediate-factoring.ll from 44 to 37 instructions on X86, and from 21 to 17 MBB's in the output. This is primarily a code size win, not a performance win. This implements CodeGen/Generic/phi-immediate-factoring.ll and PR1296. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|
dbe0deca339585dfbaed5951ef0ca2c6a0df173c |
|
31-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
Split the sdisel code munging stuff out into its own opt-pass, CodeGenPrepare. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35528 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp
|