d2bcda7706cc2a6caf3b4b304b39a9649c703278 |
|
08-Feb-2013 |
Andrew Trick <atrick@apple.com> |
Revert "Have InstCombine call SipmlifyCall when handling calls. Test case included." This reverts commit 3854a5d90fee52af1065edbed34521fff6cdc18d. This causes a clang unit test to hang: vtable-available-externally.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174692 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
3854a5d90fee52af1065edbed34521fff6cdc18d |
|
08-Feb-2013 |
Michael Ilseman <milseman@apple.com> |
Have InstCombine call SipmlifyCall when handling calls. Test case included. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174675 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e74365462a39529ae48ef4d34ec76b4543b8ea29 |
|
31-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Convert typeIncompatible to return an AttributeSet. There are still places which treat the Attribute object as a collection of attributes. I'm systematically removing them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ac90696722bef3993e5fb9f72a6fa4209bbc8763 |
|
27-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Use the AttributeSet instead of AttributeWithIndex. In the future, AttributeWithIndex won't be used anymore. Besides, it exposes the internals of the AttributeSet to outside users, which isn't goodness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173602 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8e47daf2858e980210f3e1f007036b24da342c29 |
|
26-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Remove some introspection functions. The 'getSlot' function and its ilk allow introspection into the AttributeSet class. However, that class should be opaque. Allow access through accessor methods instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
85875647d6f85cbcbe506809640b9857eaaa26a4 |
|
25-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Use the new 'getSlotIndex' method to retrieve the attribute's slot index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
28d65722d6f283b327b5815914382077fe9c0ab4 |
|
23-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Remove the last of uses that use the Attribute object as a collection of attributes. Collections of attributes are handled via the AttributeSet class now. This finally frees us up to make significant changes to how attributes are structured. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
3fc4b96b503fa202411317684a2ba02e41e43072 |
|
21-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Have AttributeSet::getRetAttributes() return an AttributeSet instead of Attribute. This further restricts the use of the Attribute class to the Attribute family of classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
c5f1bc88a2eb7ad9ff924ca90cf88494e5f947b9 |
|
21-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Make AttributeSet::getFnAttributes() return an AttributeSet instead of an Attribute. This is more code to isolate the use of the Attribute class to that of just holding one attribute instead of a collection of attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1b0c54f1c5dd61e56cb7cbc435fcb3319cff628f |
|
18-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Use AttributeSet accessor methods instead of Attribute accessor methods. Further encapsulation of the Attribute object. Don't allow direct access to the Attribute object as an aggregate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
956f13440a4aa0297606a4412f4aa091d931592a |
|
18-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Push some more methods down to hide the use of the Attribute class. Because the Attribute class is going to stop representing a collection of attributes, limit the use of it as an aggregate in favor of using AttributeSet. This replaces some of the uses for querying the function attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9d30e7208e6b2bc3fa48305e3ae371188f643425 |
|
31-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the getAttributesAtIndex and getNumAttrs methods in favor of using the getAttrSomewhere predicate. This prevents the uses of 'Attribute' as a collection of attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1dec62ed43fef82b1cafbcc1fc3d63cacd90cad9 |
|
26-Dec-2012 |
Nick Lewycky <nicholas@mxc.ca> |
Remove mid-optimizer warning. This situation should be handled differently, such as by a compiler warning, a check in clang -fsanitizer=undefined, being optimized to unreachable, or a combination of the above. PR14722. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a0be09f511c68a88ee95b73c8f0ebd78156a559e |
|
24-Dec-2012 |
Bob Wilson <bob.wilson@apple.com> |
Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368> When the backend is used from clang, it should produce proper diagnostics instead of just printing messages to errs(). Other clients may also want to register their own error handlers with the LLVMContext, and the same handler should work for warnings in the same way as the existing emitError methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15 |
|
19-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Inline the 'hasIncompatibleWithVarArgsAttrs' method into its only uses. And some minor comment reformatting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
034b94b17006f51722886b0f2283fb6fb19aca1f |
|
19-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8ad435fa4809b5a4ad1043435cbafd5c9ddf2d93 |
|
13-Dec-2012 |
Michael Ilseman <milseman@apple.com> |
Pattern matching code for intrinsics. Provides m_Argument that allows matching against a CallSite's specified argument. Provides m_Intrinsic pattern that can be templatized over the intrinsic id and bind/match arguments similarly to other pattern matchers. Implementations provided for 0 to 4 arguments, though it's very simple to extend for more. Also provides example template specialization for bswap (m_BSwap) and example of code cleanup for its use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
0fabd08066a29f4e5060539d0d0605cbfe2760b8 |
|
13-Dec-2012 |
Chad Rosier <mcrosier@apple.com> |
Typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
99faa3b4ec6d03ac7808fe4ff3fbf3d04e375502 |
|
08-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
s/AttrListPtr/AttributeSet/g to better label what this class is going to be in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169651 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
|
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
63f932ca3c91ea8ac5b592158f5e8ef7de550547 |
|
30-Nov-2012 |
Meador Inge <meadori@codesourcery.com> |
Move library call simplification statistic to instcombine The simplify-libcalls pass maintained a statistic to count the number of library calls that have been simplified. Now that library call simplification is being carried out in instcombine the statistic should be moved to there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a241b58f8d5d71eebfb2cb9be3689fe72b454474 |
|
27-Nov-2012 |
Meador Inge <meadori@codesourcery.com> |
instcombine: Don't replace all uses for instructions with no uses My commit to migrate the printf simplifiers from the simplify-libcalls in r168604 introduced a regression reported by Duncan [1]. The problem is that in some cases the library call simplifier can return a new value that has no uses and the new value's type is different than the old value's type (which is fine because there are no uses). The specific case that triggered the bug looked something like: declare void @printf(i8*, ...) ... call void (i8*, ...)* @printf(i8* %fmt) Which we want to optimized into: call i32 @putchar(i32 104) However, the code was attempting to replace all uses of the printf with the putchar and the types differ, hence a crash. This is fixed by *just* deleting the original instruction when there are no uses. The old simplify-libcalls pass is already doing something similar. [1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-November/056338.html git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
0976e00fd1cbf4128daeb72efd8957d00383fda9 |
|
20-Nov-2012 |
Bill Wendling <isanbard@gmail.com> |
Make the AttrListPtr object a part of the LLVMContext. When code deletes the context, the AttributeImpls that the AttrListPtr points to are now invalid. Therefore, instead of keeping a separate managed static for the AttrListPtrs that's reference counted, move it into the LLVMContext and delete it when deleting the AttributeImpls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ece6c6bb6329748b92403c06ac87f45c43485911 |
|
01-Nov-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Revert the series of commits starting with r166578 which introduced the getIntPtrType support for multiple address spaces via a pointer type, and also introduced a crasher bug in the constant folder reported in PR14233. These commits also contained several problems that should really be addressed before they are re-committed. I have avoided reverting various cleanups to the DataLayout APIs that are reasonable to have moving forward in order to reduce the amount of churn, and minimize the number of commits that were reverted. I've also manually updated merge conflicts and manually arranged for the getIntPtrType function to stay in DataLayout and to be defined in a plausible way after this revert. Thanks to Duncan for working through this exact strategy with me, and Nick Lewycky for tracking down the really annoying crasher this triggered. (Test case to follow in its own commit.) After discussing with Duncan extensively, and based on a note from Micah, I'm going to continue to back out some more of the more problematic patches in this series in order to ensure we go into the LLVM 3.2 branch with a reasonable story here. I'll send a note to llvmdev explaining what's going on and why. Summary of reverted revisions: r166634: Fix a compiler warning with an unused variable. r166607: Add some cleanup to the DataLayout changes requested by Chandler. r166596: Revert "Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! r166591: Delete a directory that wasn't supposed to be checked in yet. r166578: Add in support for getIntPtrType to get the pointer type based on the address space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff |
|
24-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Add in support for getIntPtrType to get the pointer type based on the address space. This checkin also adds in some tests that utilize these paths and updates some of the clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
702cc91aa1bd41540e8674921ae7ac89a4ff061f |
|
15-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Move the Attributes::Builder outside of the Attributes class and into its own class named AttrBuilder. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
07aae2e7d58fe23e370e0cbb9e1a3def99434c36 |
|
15-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Add an enum for the return and function indexes into the AttrListPtr object. This gets rid of some magic numbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
cb3de0bc800d7920087b19bb12a545d4cc84114e |
|
15-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Attributes Rewrite Convert the internal representation of the Attributes class into a pointer to an opaque object that's uniqued by and stored in the LLVMContext object. The Attributes class then becomes a thin wrapper around this opaque object. Eventually, the internal representation will be expanded to include attributes that represent code generation options, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
7be7848e17f60825f5fbc177b8a25909a30ddb00 |
|
14-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove operator cast method in favor of querying with the correct method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1feacad0ca033e7e8f2f557a0d7fa5acc4076080 |
|
14-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the bitwise AND operators from the Attributes class. Replace it with the equivalent from the builder class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
5e8904576a5260cfd5b14596e338a4bb25b9817e |
|
13-Oct-2012 |
Meador Inge <meadori@codesourcery.com> |
Implement new LibCallSimplifier class This patch implements the new LibCallSimplifier class as outlined in [1]. In addition to providing the new base library simplification infrastructure, all the fortified library call simplifications were moved over to the new infrastructure. The rest of the library simplification optimizations will be moved over with follow up patches. NOTE: The original fortified library call simplifier located in the SimplifyFortifiedLibCalls class was not removed because it is still used by CodeGenPrepare. This class will eventually go away too. [1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-August/052283.html git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
5e01f80bf85b9a68352d4c146caa9ddcf6af6dcf |
|
11-Oct-2012 |
Nick Lewycky <nicholas@mxc.ca> |
Don't crash when !tbaa.struct contents is invalid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165693 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
6765834754cbb3cb0f15b4b15e98c5e73fa50066 |
|
09-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Create enums for the different attributes. We use the enums to query whether an Attributes object has that attribute. The opaque layer is responsible for knowing where that specific attribute is stored. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8831c0605bbc0c82ce56c2fb85bd681d1c013925 |
|
09-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Convert to using the Attributes::Builder interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
3574eca1b02600bac4e625297f4ecf745f4c4f32 |
|
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
853a8c5f2ee9fa16f7c4c1fca658db40d4c73743 |
|
25-Sep-2012 |
Bill Wendling <isanbard@gmail.com> |
Move Attribute::typeIncompatible inside of the Attributes class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164629 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
b998913ff4aa58c3c342e167c785029cb331078e |
|
13-Sep-2012 |
Dan Gohman <gohman@apple.com> |
Handle the new !tbaa.struct metadata tags when converting a memcpy into scalar loads and stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ce52bc53538df8e5412ec507f2da3661c991baf1 |
|
13-Sep-2012 |
Dan Gohman <gohman@apple.com> |
Extract code for reducing a type to a single value type into a helper function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163817 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
9441ad0b6e02ee9558168b37a9620ef1afe79388 |
|
15-Aug-2012 |
Michael Liao <michael.liao@intel.com> |
fix infinite loop in instcombine with more than 4GB memcpy - memcpy size is wrongly truncated into 32-bit and treat 8GB memcpy is 0-sized memcpy - as 0-sized memcpy/memset is already removed before SimplifyMemTransfer and SimplifyMemSet in visitCallInst, replace 0 checking with assertions. - replace getZExtValue() with getLimitedValue() according to Eli Friedman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161923 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
78f8ef42173a3a9867ed789073d4ddc652fb7ff2 |
|
09-Jul-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
instcombine: merge the functions that remove dead allocas and dead mallocs/callocs/... This patch removes ~70 lines in InstCombineLoadStoreAlloca.cpp and makes both functions a bit more aggressive than before :) In theory, we can be more aggressive when removing an alloca than a malloc, because an alloca pointer should never escape, but we are not taking advantage of this anyway git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f1fb6c836940d1b92c0e3df27f4c9ca6569ff968 |
|
22-Jun-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
instcombine: disable optimization of 'invoke null/undef'. I'll move this functionality to SimplifyCFG (since we cannot make changes to the CFG here). Fixes the crashes with the attached test case git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
2b3e9580536dfb5666b9d91e99baebf6d45bfa5f |
|
21-Jun-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
Add support for invoke to the MemoryBuiltin analysid. Update comments accordingly. Make instcombine remove useless invokes to C++'s 'new' allocation function (test attached). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9e72a79ef4a9fcda482ce0b0e1f0bd6a4f16cffd |
|
21-Jun-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
refactor the MemoryBuiltin analysis: - provide more extensive set of functions to detect library allocation functions (e.g., malloc, calloc, strdup, etc) - provide an API to compute the size and offset of an object pointed by Move a few clients (GVN, AA, instcombine, ...) to the new API. This implementation is a lot more aggressive than each of the custom implementations being replaced. Patch reviewed by Nick Lewycky and Chandler Carruth, thanks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d509d0b532ec2358b3f341d4a4cd1411cb8b5db2 |
|
28-May-2012 |
Chris Lattner <sabre@nondot.org> |
switch AttrListPtr::get to take an ArrayRef, simplifying a lot of clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
23e75da7e0622528be3c3908b5fe3ae8857cdf65 |
|
22-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
revert my previous patches that introduced an additional parameter to the objectsize intrinsic. After a lot of discussion, we realized it's not the best option for run-time bounds checking git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
12c807873a5988d900c8032e7d98f8f07da5c628 |
|
11-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
objectsize: add a few more tests and fix a bug git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9d236f909cec671ef2ff186c8fce6d2e1540a0a9 |
|
11-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
objectsize: add support for GEPs with non-constant indexes add an additional parameter to InstCombiner::EmitGEPOffset() to force it to *not* emit operations with NUW flag git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e3305b17502c2a34152d4f50607b685eb2cadd21 |
|
09-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
objectsize: refactor code a bit to enable future changes to support run-time information add support to compute allocation sizes at run-time if penalty > 1 (e.g., malloc(x), calloc(x, y), and VLAs) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156515 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
cb348b9b45025393ec5b28eac8bb6773a9b603f6 |
|
04-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
remove calls to calloc if the allocated memory is not used (it was already being done for malloc) fix a few typos found by Chad in my previous commit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156110 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
252ef566e8734b6bcf46434d0a7954c9eda0bd96 |
|
03-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
add support for calloc to objectsize lowering git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a199e01d8edd54f995dfd673e4fb6607fbeb09f9 |
|
03-May-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
replace 'break's with 'return 0' in visitCallInst code for objectsize, since there is no need to fallback to visitCallSite. This gives a 0.9% in a test case git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
973f72a29aeafb1fdc4f8dafc3f6c6651cbb0c99 |
|
01-May-2012 |
Lang Hames <lhames@gmail.com> |
Add support for llvm.arm.neon.vmull* intrinsics to InstCombine. Fixes <rdar://problem/11291436>. This is a second attempt at a fix for this, the first was r155468. Thanks to Chandler, Bob and others for the feedback that helped me improve this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155866 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
87aac6a8772e71e2edc7faceaace9cf8d9db88ea |
|
25-Apr-2012 |
Lang Hames <lhames@gmail.com> |
Reverting r155468. Chris and Chandler have convinced me that it's dangerous and in poor taste. Talking through some alternate solutions with Chandler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155530 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1d9e68dab1fc29e3a5e05a3b0b8d7c70de5e10b2 |
|
24-Apr-2012 |
Lang Hames <lhames@gmail.com> |
Add support for llvm.arm.neon.vmull* intrinsics to InstCombine. This fixes <rdar://problem/11291436>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
26c8dcc692fb2addd475446cfff24d6a4e958bca |
|
04-Apr-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Always compute all the bits in ComputeMaskedBits. This allows us to keep passing reduced masks to SimplifyDemandedBits, but know about all the bits if SimplifyDemandedBits fails. This allows instcombine to simplify cases like the one in the included testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
aa5abe88d6aa445afa593476a665e3ab14b3524c |
|
06-Feb-2012 |
Bill Wendling <isanbard@gmail.com> |
[unwind removal] We no longer have 'unwind' instructions being generated, so remove the code that handles them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149901 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
871a2051f7d49827259d719a97b8cc86163edbd9 |
|
03-Feb-2012 |
Jim Grosbach <grosbach@apple.com> |
Narrow test further. Make bot and test happy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
00e403abe384b8f61dd012242d3d81a23541ca25 |
|
03-Feb-2012 |
Jim Grosbach <grosbach@apple.com> |
Tidy up. Trailing whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f374486659822e93054363bef05e781acee16f3b |
|
03-Feb-2012 |
Jim Grosbach <grosbach@apple.com> |
Restrict InstCombine from converting varargs to or from fixed args. More targetted fix replacing d0e277d272d517ca1cda368267d199f0da7cad95. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149648 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d5917f0b4d8f87985bfdf130c269e1929d0085d1 |
|
03-Feb-2012 |
Jim Grosbach <grosbach@apple.com> |
Revert "Disable InstCombine unsafe folding bitcasts of calls w/ varargs." This reverts commit d0e277d272d517ca1cda368267d199f0da7cad95. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d0e277d272d517ca1cda368267d199f0da7cad95 |
|
01-Feb-2012 |
Jim Grosbach <grosbach@apple.com> |
Disable InstCombine unsafe folding bitcasts of calls w/ varargs. Changing arguments from being passed as fixed to varargs is unsafe, as the ABI may require they be handled differently (stack vs. register, for example). Remove two tests which rely on the bitcast being folded into the direct call, which is exactly the transformation that's unsafe. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a78fa8cc2dd6d2ffe5e4fe605f38aae7b3d2fb7a |
|
27-Jan-2012 |
Chris Lattner <sabre@nondot.org> |
continue making the world safe for ConstantDataVector. At this point, we should (theoretically optimize and codegen ConstantDataVector as well as ConstantVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
1608769abeb1430dc34f31ffac0d9850f99ae36a |
|
05-Dec-2011 |
Nadav Rotem <nadav.rotem@intel.com> |
Add support for vectors of pointers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ba78c883d4c89bd807fa7ebea7ac6f22f3503223 |
|
29-Nov-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Zap some completely ridiculous code. There's probably a miscompile here, but I don't really want to try to write a testcase involving an invoke returning a pointer to a varargs function... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
173862e5468fbcf4b022b9088d2c81b25c2d60c5 |
|
20-Nov-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Refactor code to use new attribute getters on CallSite for NoCapture and ByVal. Suggested in code review by Eli. That code in InstCombine looks kinda suspicious. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
4a544a79bd735967f1d33fe675ae4566dbd17813 |
|
06-Sep-2011 |
Duncan Sands <baldrick@free.fr> |
Split the init.trampoline intrinsic, which currently combines GCC's init.trampoline and adjust.trampoline intrinsics, into two intrinsics like in GCC. While having one combined intrinsic is tempting, it is not natural because typically the trampoline initialization needs to be done in one function, and the result of adjust trampoline is needed in a different (nested) function. To get around this llvm-gcc hacks the nested function lowering code to insert an additional parent variable holding the adjust.trampoline result that can be accessed from the child function. Dragonegg doesn't have the luxury of tweaking GCC code, so it stored the result of adjust.trampoline in the memory GCC set aside for the trampoline itself (this is always available in the child function), and set up some new memory (using an alloca) to hold the trampoline. Unfortunately this breaks Go which allocates trampoline memory on the heap and wants to use it even after the parent has exited (!). Rather than doing even more hacks to get Go working, it seemed best to just use two intrinsics like in GCC. Patch mostly by Sanjoy Das. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
89d4411cef736898047aa7e3bc159da39cacf8e6 |
|
25-Aug-2011 |
Bill Wendling <isanbard@gmail.com> |
When inserting new instructions, use getFirstInsertionPt instead of getFirstNonPHI so that it will skip over the landingpad instructions as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
dccc03b2423fe65efb5963ae816b99c24fc53374 |
|
31-Jul-2011 |
Bill Wendling <isanbard@gmail.com> |
Add the 'resume' instruction for the new EH rewrite. This adds the 'resume' instruction class, IR parsing, and bitcode reading and writing. The 'resume' instruction resumes propagation of an existing (in-flight) exception whose unwinding was interrupted with a 'landingpad' instruction (to be added later). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136589 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
10c6d12a9fd4dab411091f64db4db69670b88850 |
|
30-Jul-2011 |
Bill Wendling <isanbard@gmail.com> |
Revert r136253, r136263, r136269, r136313, r136325, r136326, r136329, r136338, r136339, r136341, r136369, r136387, r136392, r136396, r136429, r136430, r136444, r136445, r136446, r136253 pending review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
772fe17a6d07304ae2e6b3052bbb24ebb751f0f3 |
|
27-Jul-2011 |
Bill Wendling <isanbard@gmail.com> |
Merge the contents from exception-handling-rewrite to the mainline. This adds the new instructions 'landingpad' and 'resume'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136253 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8fbbb3980755d74539a0aed02bc18842ed2bd18d |
|
19-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Convert TargetData::getIndexedOffset to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
a3efbb15ddd5aa9006564cd79086723640084878 |
|
15-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Convert CallInst and InvokeInst APIs to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
eb9a85f09e18b3fe88499710404b38d3a9128f62 |
|
14-Jul-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Change Intrinsic::getDeclaration and friends to take an ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
5fdd6c8793462549e3593890ec61573da06e3346 |
|
12-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Second attempt at de-constifying LLVM Types in FunctionType::get(), StructType::get() and TargetData::getIntPtrType(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
2280ebd61416b73d0b6137f275b25af82e268d1f |
|
12-Jul-2011 |
Bill Wendling <isanbard@gmail.com> |
Revert r134893 and r134888 (and related patches in other trees). It was causing an assert on Darwin llvm-gcc builds. Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\ ne 2067. etc. http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354 --- Reverse-merging r134893 into '.': U include/llvm/Target/TargetData.h U include/llvm/DerivedTypes.h U tools/bugpoint/ExtractFunction.cpp U unittests/Support/TypeBuilderTest.cpp U lib/Target/ARM/ARMGlobalMerge.cpp U lib/Target/TargetData.cpp U lib/VMCore/Constants.cpp U lib/VMCore/Type.cpp U lib/VMCore/Core.cpp U lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Instrumentation/ProfilingUtils.cpp U lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/CodeGen/SjLjEHPrepare.cpp --- Reverse-merging r134888 into '.': G include/llvm/DerivedTypes.h U include/llvm/Support/TypeBuilder.h U include/llvm/Intrinsics.h U unittests/Analysis/ScalarEvolutionTest.cpp U unittests/ExecutionEngine/JIT/JITTest.cpp U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp U unittests/VMCore/PassManagerTest.cpp G unittests/Support/TypeBuilderTest.cpp U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp U lib/VMCore/IRBuilder.cpp G lib/VMCore/Type.cpp U lib/VMCore/Function.cpp G lib/VMCore/Core.cpp U lib/VMCore/Module.cpp U lib/AsmParser/LLParser.cpp U lib/Transforms/Utils/CloneFunction.cpp G lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Utils/InlineFunction.cpp U lib/Transforms/Instrumentation/GCOVProfiling.cpp U lib/Transforms/Scalar/ObjCARC.cpp U lib/Transforms/Scalar/SimplifyLibCalls.cpp U lib/Transforms/Scalar/MemCpyOptimizer.cpp G lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/Transforms/IPO/ArgumentPromotion.cpp U lib/Transforms/InstCombine/InstCombineCompares.cpp U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp U lib/Transforms/InstCombine/InstCombineCalls.cpp U lib/CodeGen/DwarfEHPrepare.cpp U lib/CodeGen/IntrinsicLowering.cpp U lib/Bitcode/Reader/BitcodeReader.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f362affa3a695164a94d275fb44d18f44ebb855a |
|
11-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
De-constify Types in FunctionType::get(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f1ac465b67d5fc11a0d9cd09b98ceb4ffa75dd97 |
|
01-Jul-2011 |
Owen Anderson <resistor@mac.com> |
Generalize @llvm.ctlz, @llvm.cttz, and @llvm.ctpop to work on vectors of integers, and fix the one optimization pass that I'm aware of that needs updating for this. At least one current target, ARM NEON, can implement these operations on vectors directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
b065b06c12dba6001b8140df2744d0c856ef6ea1 |
|
20-Jun-2011 |
Chris Lattner <sabre@nondot.org> |
Revamp the "ConstantStruct::get" methods. Previously, these were scattered all over the place in different styles and variants. Standardize on two preferred entrypoints: one that takes a StructType and ArrayRef, and one that takes StructType and varargs. In cases where there isn't a struct type convenient, we now add a ConstantStruct::getAnon method (whose name will make more sense after a few more patches land). It would be "really really nice" if the ConstantStruct::get and ConstantVector::get methods didn't make temporary std::vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133412 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a311c34d2af7c750f016ef5e4c41bee77a1dfac7 |
|
27-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Final step of instcombine debuginfo; switch a couple more places over to InsertNewInstWith, and use setDebugLoc for the cases which can't be easily handled by the automated mechanisms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
cd89d4d52443728ecbda9554bd3095324bd29162 |
|
21-May-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Revert "InstCombine: Turn mul.with.overflow(X, 2) into the cheaper add.with.overflow(X, X)" It's better to do this in codegen, mul.with.overflow(X, 2) is more canonical because it has only one use on "X". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
c21b205f93fa7bc135928ff9f4981f9062e2fd53 |
|
21-May-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Turn mul.with.overflow(X, 2) into the cheaper add.with.overflow(X, X) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
aaa7f499c1a2d46491a98d978ef45b0a06d73d31 |
|
19-May-2011 |
Evan Cheng <evan.cheng@apple.com> |
Add comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e6f364b6c44eda14cd4ad54366ea5cc7246b9500 |
|
19-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
More instcombine cleanup, towards improving debug line info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
59f15918c28ad340bb9f0ef78e43c2952a5b5c1c |
|
18-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
More instcombine cleanup aimed towards improving debug line info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d116611e0a884e53ea1524de3a1306c1eb447228 |
|
18-May-2011 |
Stuart Hastings <stuart@apple.com> |
Fix inelegant initialization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ef819d0ed8c9df3da633e8c1240e582a7879bb94 |
|
18-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Start trying to make InstCombine preserve more debug info. The idea here is to set the debug location on the IRBuilder, which will be then right location in most cases. This should magically give many transformations debug locations, and fixing places which are missing a debug location will usually just means changing the code creating it to use the IRBuilder. As an example, the change to InstCombineCalls catches a common case where a call to a bitcast of a function is rewritten. Chris, does this approach look reasonable? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
3e22cb9ec30cd9b1be9b0f50e400f512124997e5 |
|
18-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Use ReplaceInstUsesWith instead of replaceAllUsesWith where appropriate in instcombine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ca1ef485854d668f794bf389154aa371aa2ed535 |
|
18-May-2011 |
Stuart Hastings <stuart@apple.com> |
X86 pmovsx/pmovzx ignore the upper half of their inputs. rdar://problem/6945110 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f93f7b2446bec3febc30b7136e18704664bd98cc |
|
13-Apr-2011 |
Bill Wendling <isanbard@gmail.com> |
Reapply r129401 with patch for clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f9b2dc66c87256b55f9bdfe037d1fa6f705200e8 |
|
13-Apr-2011 |
Bill Wendling <isanbard@gmail.com> |
Revert r129401 for now. Clang is using the old way of doing things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d5f323d70bd2d9bc8a63a68bfe439a69e0104bbf |
|
13-Apr-2011 |
Bill Wendling <isanbard@gmail.com> |
Remove the unaligned load intrinsics in favor of using native unaligned loads. Now that we have a first-class way to represent unaligned loads, the unaligned load intrinsics are superfluous. First part of <rdar://problem/8460511>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129401 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d655e6e9dc0d21c3a2d76494dec255bb027572ae |
|
27-Mar-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Use APInt's umul_ov instead of rolling our own overflow detection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
b9b80c326847ccb1b0611e9b6dc4d372ecc158d3 |
|
15-Mar-2011 |
Eric Christopher <echristo@apple.com> |
If we don't know how long a string is we can't fold an _chk version to the normal version. Fixes rdar://9123638 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
6b96fe7e146f7eb594e67210c6bef511ad0a2058 |
|
10-Mar-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Turn umul_with_overflow into mul nuw if we can prove that it cannot overflow. This happens a lot in clang-compiled C++ code because it adds overflow checks to operator new[]: unsigned *foo(unsigned n) { return new unsigned[n]; } We can optimize away the overflow check on 64 bit targets because (uint64_t)n*4 cannot overflow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
091b1e3c74fee17e33aa87478ab07bfbba0a2f78 |
|
24-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
change instcombine to not turn a call to non-varargs bitcast of function prototype into a call to a varargs prototype. We do allow the xform if we have a definition, but otherwise we don't want to risk that we're changing the abi in a subtle way. On X86-64, for example, varargs require passing stuff in %al. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9cc9f50abc28f08fb6082b5ee4f5cc7e1af4969b |
|
10-Jan-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Teach instcombine about the rest of the SSE and SSE2 conversion intrinsics element dependencies. Reviewed by Nick. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
eaff66a8950bb9ed76e830c4ded7e0b695ab6904 |
|
07-Jan-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Revert 122959, it needs more thought. Add it back to README.txt with additional notes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8143a84c46b8d2fb58eddb46d84dd5d44d03cb6c |
|
06-Jan-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Turn _chk functions into the "unsafe" variant if length and max langth are equal. This happens when we take the (non-constant) length from a malloc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
240d42d18559a1f75558951ada556baaf289c7f0 |
|
06-Jan-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: If we call llvm.objectsize on a malloc call we can replace it with the size passed to malloc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122959 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
783a5c2b695015a5a2dfc48ee28b9936d0077542 |
|
06-Jan-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Teach llvm.objectsize folding to look through GEPs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ae47be1ea023e4b1e6bbbdc4687333eea54c84c8 |
|
25-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
don't lose TD info git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
687140c818ba4b896329a83324714140b6580ef8 |
|
25-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
2b9375e44b0e99ce23d2cef8de78f66347eef88a |
|
20-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
fix PR8807 by making transformConstExprCastCall aware of byval arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ab215bc371677cdeac6eacb3e890e5af666d1ab4 |
|
20-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
various cleanups for transformConstExprCastCall git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
55fb9b0fcf89501a0abe74808f4e08e0b3a17207 |
|
20-Dec-2010 |
Mon P Wang <wangmp@apple.com> |
Avoid dropping the address space when InstCombine optimizes memset git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122215 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
74b64611c4b74a633239f2a9bfd6be07cdedff88 |
|
19-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
move a transformation to a more logical place, simplifying it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122183 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
26b482d7a76df3f67675ce852daed0eba709c63e |
|
19-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
optimize uadd(x, cst) into a comparison when the normal result is dead. This is required for my next patch to not regress the testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
364f17c47162a657bb0c3516588cdfc5297664f0 |
|
22-Oct-2010 |
Bob Wilson <bob.wilson@apple.com> |
Teach instcombine to set the alignment arguments for NEON load/store intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
6eff75104e660bae5b28963190a6940eeecb7484 |
|
01-Oct-2010 |
Chris Lattner <sabre@nondot.org> |
fix PR8267 - Instcombine shouldn't optimizer away volatile memcpy's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115296 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
4fffb345ed20bd144a31c1c1724cffb6f519b814 |
|
09-Aug-2010 |
Eli Friedman <eli.friedman@gmail.com> |
PR7853: fix a silly mistake introduced in r101899, and add a test to make sure it doesn't regress again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
795e70e4319bb38eb92701c2a463eeb7584a9b25 |
|
03-Aug-2010 |
Dan Gohman <gohman@apple.com> |
Use unary + instead of a separate local variable for working around std::min vs static const friction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110112 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e16829b401409b398c9de9847c1d12eb931f7d63 |
|
30-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Move MaximumAlignment to be a member of the Value class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109891 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
138aa2a82bc6de611f28e51332fb0a30262a58e3 |
|
28-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Define a maximum supported alignment value for load, store, and alloca instructions (constrained by their internal encoding), and add error checking for it. Fix an instcombine bug which generated huge alignment values (null is infinitely aligned). This fixes undefined behavior noticed by John Regehr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
33591af872045194dc00321041affb92810183b4 |
|
28-Jul-2010 |
Dan Gohman <gohman@apple.com> |
When user code intentionally dereferences null, the alignment of the dereference is theoretically infinite. Put a cap on the computed alignment to avoid overflow, noticed by John Regehr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a399781289092fcdceb58b21174229f4373c4191 |
|
22-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
undo 80 column trespassing I caused git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
2458513430afa287da17c326f7d0b9d852f8183d |
|
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@107275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a90c5c7605e0d8df96e61d4bf0cc47a7eaea92cf |
|
28-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9c68a7bb45ebf71cec5ab4eab7c73aacdfce16df |
|
25-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use ArgOperand API (some hunks I could split) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
2f1ab74e763ba7f10a058f62393d0987f6f7e298 |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use (even more, still) ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
bcda85c74304ffada586a9c58ce9bcff93b69a86 |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use (even more) ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
c310fcc909c21c94d1e5b05a97763911568a3ed8 |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
cea7ac7c01c6a15eccb2cb7a181df1baf915de0d |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use ArgOperand API git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
1d9b973fd7e60e4149678a03aac762551c846f13 |
|
27-May-2010 |
Duncan Sands <baldrick@free.fr> |
Teach instCombine to remove malloc+free if malloc's only uses are comparisons to null. Patch by Matti Niemenmaa. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104871 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
2d4b8ee1d9b49bfb30afb44e0ed7abccaea2093c |
|
28-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
further clarify alignment of globals, fix instcombine to not increase the alignment of globals with an assigned alignment and section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a9b2313c13a1bc8cbae751da03a9049ecaf0f918 |
|
20-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
use abstract accessors to CallInst git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
2ff961f66816daab8bbc58a19025161d969821c2 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101364, which has been backed out in r101368 with a fix 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@101397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9ee17208115482441953127615231c59a2f4d052 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101364, as it trips the linux nightlybot on some clang C++ tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
165dac08d1bb8428b32a5f39cdd3dbee2888987f |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
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@101364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
20adc9dc4650313f017b27d9818eb2176238113d |
|
04-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e754d3fb852abdeaf910c7331eed60f6303597c1 |
|
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Revert r100191 since it breaks objc in clang git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e33c848fa481b038d5ad0c7c898c33b2b27ec71e |
|
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
100f090adde26005b9f1eca96871dff52825b27b |
|
31-Mar-2010 |
Bob Wilson <bob.wilson@apple.com> |
Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
808bab0169ab7d2e8dfdc72dd2c991cd8ff2396d |
|
30-Mar-2010 |
Mon P Wang <wangmp@apple.com> |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9d8f002d8f5a5aba665bb6f85c19eee77810043c |
|
23-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Fix an incorrect logic causing instcombine to miss some _chk -> non-chk transformations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
654c06f6457f80428e40810ad251c412462731e4 |
|
20-Mar-2010 |
Gabor Greif <ggreif@gmail.com> |
Add a setCalledFunction member to InvokeInst (like in CallInst) and use this (as well as getCalledValue) to access the callee, instead of {g|s}etOperand(0). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
bd973762003329c217eec2439071e9f93af3eea5 |
|
11-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Add strncpy libcall creator. Use it when it should be used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
687fed3530366b03a9a6433df0c032247ab17d5b |
|
08-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Re-commit 97860 with fix. getMallocAllocatedType may return null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98000 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
7b323a34fa034389e9e439f6c02eeb73e87ab9db |
|
06-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Let the fallthrough handle whether or not we've changed anything before we try to optimize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97876 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
27ceaa13f820e33c44e29adc2095dd3e1e69d09f |
|
06-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Migrate _chk call lowering from SimplifyLibCalls to InstCombine. Stub out the remainder of the calls that we should lower in some way and move the tests to the new correct directory. Fix up tests that are now optimized more than they were before by -instcombine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
75f0d6953a8492ec21f3b82489090a1152f1f516 |
|
06-Mar-2010 |
Eric Christopher <echristo@apple.com> |
Temporarily revert: Log: Transform @llvm.objectsize to integer if the argument is a result of malloc of known size. Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp llvm/trunk/test/Transforms/InstCombine/objsize.ll It appears to be causing swb and nightly test failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97866 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
fc8ccfedbba651e324d827de6693aad1491314c7 |
|
06-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Transform @llvm.objectsize to integer if the argument is a result of malloc of known size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a862326bc72be147d9f668b84b9187258e690dc4 |
|
05-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Instcombine should turn llvm.objectsize of a alloca with static size to an integer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
f79d6246e6b6a83e31a1360e80f828707a51f98e |
|
05-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add missing break for Intrinsic::objectsize case. It was falling through to the following Intrinsic::bswap code. I have no idea why it wasn't breaking stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97774 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
6e5dfd4bf5205d5f84d958c9636bc0f57c23b96a |
|
23-Feb-2010 |
Evan Cheng <evan.cheng@apple.com> |
Instcombine constant folding can normalize gep with negative index to index with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.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/InstCombine/InstCombineCalls.cpp
|
b0bc6c361da9009e8414efde317d9bbff755f6c0 |
|
15-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
Uniformize the names of type predicates: rather than having isFloatTy and isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
77ffe3b31e32fbbcb06e71c8a68129df6266a492 |
|
14-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Fix a problem where we had bitcasted operands that gave us odd offsets since the bitcasted pointer size and the offset pointer size are going to be different types for the GEP vs base object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
dfdddd8ed621a44ec3da0e2fff42abf9e60e812a |
|
11-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Make sure that ConstantExpr offsets also aren't off of extern symbols. Thanks to Duncan Sands for the testcase! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
26d0e892e36e8dcc4248a8ccc8bedbd2d235eaee |
|
11-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Add ConstantExpr handling to Intrinsic::objectsize lowering. Update testcase accordingly now that we can optimize another section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
415326b4edcc967dfb03c5ab41923b195e7c3cb1 |
|
09-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Move Intrinsic::objectsize lowering back to InstCombineCalls and enable constant 0 offset lowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
724bea90b01b49be9a9f513cd40abbf0338204f0 |
|
05-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Remove this code for now. I have a better idea and will rewrite with that in mind. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
e7b97471f8acf44a0dec3c4dade96b64881175f6 |
|
04-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Temporarily revert this since it appears to have caused a build failure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ea4b6dfd8fc506d127e08770d21a81fe269177b2 |
|
04-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Rework constant expr and array handling for objectsize instcombining. Fix bugs where we would compute out of bounds as in bounds, and where we couldn't know that the linker could override the size of an array. Add a few new testcases, change existing testcase to use a private global array instead of extern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
ec5ef6d8b0fcdf7bf9df397a0e3d03e1d57b6fc1 |
|
04-Feb-2010 |
Eric Christopher <echristo@apple.com> |
If we're dealing with a zero-length array, don't lower to any particular size, we just don't know what the length is yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
0c6a8f9eda4651e0f54a7edf171525d16b1ff3fa |
|
03-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Recommit this, looks like it wasn't the cause. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95165 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
9f34dd305b7d9d54904a28774e93ac8d81b211fc |
|
03-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Hopefully temporarily revert this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8334f068c4a7df344da704fdde49c2c6c0b18799 |
|
02-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Reformat my last patch slightly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95147 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
a6a089cd244033109a232c99cb09ac424703afff |
|
02-Feb-2010 |
Eric Christopher <echristo@apple.com> |
Re-add strcmp and known size object size checking optimization. Passed bootstrap and nightly test run here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95145 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
d569561835b0fa4dbbb0fca1b1f0a8de6c01439a |
|
01-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
fix rdar://7590304, a miscompilation of objc apps on arm. The caller of objc message send was getting marked arm_apcscc, but the prototype isn't. This is fine at runtime because objcmsgsend is implemented in assembly. Only turn a mismatched caller and callee into 'unreachable' if the callee is a definition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
830f3f205d8a77acbf8838fe78c2c733ca924d9c |
|
01-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
fix rdar://7590304, an infinite loop in instcombine. In the invoke case, instcombine can't zap the invoke for fear of changing the CFG. However, we have to do something to prevent the next iteration of instcombine from inserting another store -> undef before the invoke thereby getting into infinite iteration between dead store elim and store insertion. Just zap the callee to null, which will prevent the next iteration from doing anything. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
36664bfc7a540f1b45e80c966e36b1aea9d29aa3 |
|
29-Jan-2010 |
Eric Christopher <echristo@apple.com> |
Revert my last couple of patches. They appear to have broken bison. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
949124ce0fcaa2428adb95a729ccf8727054f294 |
|
29-Jan-2010 |
Eric Christopher <echristo@apple.com> |
Add constant support to object size handling and remove default lowering. We'll either figure it out, or not and be lowered by SelectionDAGBuild. Add test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
4d1f58861d38f114e74d515ac1bd029e3a5a024f |
|
08-Jan-2010 |
Eric Christopher <echristo@apple.com> |
Remove unnecessary dyn_cast and add a comment. Part of a WIP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
130063207de67ecb36e5c80b9118f3c0817fbc6f |
|
06-Jan-2010 |
Eric Christopher <echristo@apple.com> |
Move the object size intrinsic optimization to inst-combine and make it work for any integer size return type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
8c65f6e71c1d46d823b9a884819992a9255edd54 |
|
05-Jan-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Move remaining stuff to the isInteger predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92771 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|
753a2b464d0628231bd3dce645edd05dfbaa3a06 |
|
05-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
split call handling out to InstCombineCalls.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92707 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
|