- Apr 25, 2014
-
-
Craig Topper authored
llvm-svn: 207196
-
- Apr 23, 2014
-
-
Matt Arsenault authored
These places are inconsequential in practice. llvm-svn: 207021
-
- Mar 12, 2014
-
-
Evan Cheng authored
llvm-svn: 203687
-
- Mar 11, 2014
-
-
Evan Cheng authored
llvm-svn: 203520
-
- Mar 10, 2014
-
-
Evan Cheng authored
optimize a call to a llvm intrinsic to something that invovles a call to a C library call, make sure it sets the right calling convention on the call. e.g. extern double pow(double, double); double t(double x) { return pow(10, x); } Compiles to something like this for AAPCS-VFP: define arm_aapcs_vfpcc double @t(double %x) #0 { entry: %0 = call double @llvm.pow.f64(double 1.000000e+01, double %x) ret double %0 } declare double @llvm.pow.f64(double, double) #1 Simplify libcall (part of instcombine) will turn the above into: define arm_aapcs_vfpcc double @t(double %x) #0 { entry: %__exp10 = call double @__exp10(double %x) #1 ret double %__exp10 } declare double @__exp10(double) The pre-instcombine code works because calls to LLVM builtins are special. Instruction selection will chose the right calling convention for the call. However, the code after instcombine is wrong. The call to __exp10 will use the C calling convention. I can think of 3 options to fix this. 1. Make "C" calling convention just work since the target should know what CC is being used. This doesn't work because each function can use different CC with the "pcs" attribute. 2. Have Clang add the right CC keyword on the calls to LLVM builtin. This will work but it doesn't match the LLVM IR specification which states these are "Standard C Library Intrinsics". 3. Fix simplify libcall so the resulting calls to the C routines will have the proper CC keyword. e.g. %__exp10 = call arm_aapcs_vfpcc double @__exp10(double %x) #1 This works and is the solution I implemented here. Both solutions #2 and #3 would work. After carefully considering the pros and cons, I decided to implement #3 for the following reasons. 1. It doesn't change the "spec" of the intrinsics. 2. It's a self-contained fix. There are a couple of potential downsides. 1. There could be other places in the optimizer that is broken in the same way that's not addressed by this. 2. There could be other calling conventions that need to be propagated by simplify-libcall that's not handled. But for now, this is the fix that I'm most comfortable with. llvm-svn: 203488
-
- Dec 16, 2013
-
-
Yi Jiang authored
Enable double to float shrinking optimizations for binary functions like 'fmin/fmax'. Fix radar:15283121 llvm-svn: 197434
-
- Jan 26, 2013
-
-
Bill Wendling authored
llvm-svn: 173536
-
- Jan 02, 2013
-
-
Chandler Carruth authored
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. llvm-svn: 171366
-
- Dec 22, 2012
-
-
Bill Wendling authored
Change 'AttrVal' to 'AttrKind' to better reflect that it's a kind of attribute instead of the value of the attribute. llvm-svn: 170972
-
- Dec 21, 2012
-
-
Roman Divacky authored
llvm-svn: 170902
-
- Dec 19, 2012
-
-
Bill Wendling authored
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future. llvm-svn: 170502
-
- Dec 08, 2012
-
-
Bill Wendling authored
llvm-svn: 169651
-
- Dec 03, 2012
-
-
Chandler Carruth authored
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. =] llvm-svn: 169131
-
- Nov 20, 2012
-
-
Bill Wendling authored
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. llvm-svn: 168354
-
- Nov 01, 2012
-
-
Chandler Carruth authored
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. llvm-svn: 167221
-
- Oct 24, 2012
-
-
Micah Villmow authored
This checkin also adds in some tests that utilize these paths and updates some of the clients. llvm-svn: 166578
-
- Oct 15, 2012
-
-
Bill Wendling authored
Add an enum for the return and function indexes into the AttrListPtr object. This gets rid of some magic numbers. llvm-svn: 165924
-
Bill Wendling authored
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. llvm-svn: 165917
-
- Oct 10, 2012
-
-
Bill Wendling authored
enums. These are then created via the correct Attributes creation method. llvm-svn: 165607
-
- Oct 08, 2012
-
-
Micah Villmow authored
llvm-svn: 165402
-
- Aug 01, 2012
-
-
Nuno Lopes authored
Sorry, not used to this editor anymore.. XCode please come back; you're forgiven :) llvm-svn: 161120
-
Nuno Lopes authored
I'll commit a test to the clang tree. llvm-svn: 161118
-
- Jul 25, 2012
-
-
Nuno Lopes authored
llvm-svn: 160741
-
Nuno Lopes authored
make all Emit*() functions consult the TargetLibraryInfo information before creating a call to a library function. Update all clients to pass the TLI information around. Previous draft reviewed by Eli. llvm-svn: 160733
-
- Jun 29, 2012
-
-
Chandler Carruth authored
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. llvm-svn: 159421
-
- May 28, 2012
-
-
Chris Lattner authored
llvm-svn: 157556
-
- Nov 17, 2011
-
-
Eli Friedman authored
Add support for custom names for library functions in TargetLibraryInfo. Add a custom name for fwrite and fputs on x86-32 OSX. Make SimplifyLibCalls honor the custom names for fwrite and fputs. Fixes <rdar://problem/9815881>. llvm-svn: 144876
-
- Nov 15, 2011
-
-
Benjamin Kramer authored
llvm-svn: 144675
-
- Jul 18, 2011
-
-
Chris Lattner authored
llvm-svn: 135375
-
- May 27, 2011
-
-
Eli Friedman authored
One more debug line number miss in instcombine (although the code in question isn't actually in instcombine). llvm-svn: 132170
-
- Dec 27, 2010
-
-
Benjamin Kramer authored
BuildLibCalls: Nuke EmitMemCpy, EmitMemMove and EmitMemSet. They are dead and superseded by IRBuilder. llvm-svn: 122576
-
- Jul 22, 2010
-
-
Gabor Greif authored
llvm-svn: 109092
-
- Jul 16, 2010
-
-
Gabor Greif authored
llvm-svn: 108522
-
- Jun 28, 2010
-
-
Gabor Greif authored
llvm-svn: 107002
-
- Jun 25, 2010
-
-
Gabor Greif authored
llvm-svn: 106825
-
- Jun 15, 2010
-
-
Benjamin Kramer authored
llvm-svn: 106047
-
- May 31, 2010
-
-
Nick Lewycky authored
first. Fixes PR7265. llvm-svn: 105206
-
- Apr 17, 2010
-
-
Eric Christopher authored
Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
-
- Apr 16, 2010
-
-
Gabor Greif authored
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 llvm-svn: 101465
-
Gabor Greif authored
llvm-svn: 101434
-