summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Emit wide string literals with the appropriate alignment.John McCall2011-08-042-17/+29
| | | | | | Patch by Craig Topper and Sundeep! llvm-svn: 136856
* Use the general conditional-cleanup framework instead of rolling ourJohn McCall2011-08-031-45/+4
| | | | | | own, incorrectly, for releasing objects at the end of a full-expression. llvm-svn: 136823
* Handle "homogeneous aggregates" as required by the ARM AAPCS-VFP ABI.Bob Wilson2011-08-032-48/+154
| | | | | | | | | | | | | A homogeneous aggregate is an aggregate data structure where after flattening any nesting there are 1 to 4 elements of the same base type that is either a float, double, or Neon vector. All Neon vectors of the same size, either 64 or 128 bits, are treated as equivalent for this purpose. When using the AAPCS-VFP ABI, check for homogeneous aggregates and pass them as arguments by expanding them into a sequence of their base types. This requires extending the existing support for expanded arguments to handle not only structs, but also constant arrays and complex types. llvm-svn: 136767
* When rewriting a call to a K&R function to lead to a well-prototypedJohn McCall2011-08-031-1/+20
| | | | | | | function, be sure to drop parameter attributes when dropping their associated arguments. Patch by Aaron Landwehr! llvm-svn: 136753
* Implements alignment for long long and double types in va_arg on ARM AAPCS.Rafael Espindola2011-08-021-1/+10
| | | | | | Patch by Jim (Ningjie) Chen. llvm-svn: 136734
* Update for LLVM change in PassManagerBuilder.Rafael Espindola2011-08-021-1/+5
| | | | llvm-svn: 136728
* PR10566: Make sure codegen for deleting an pointer to an incomplete type ↵Eli Friedman2011-08-021-1/+1
| | | | | | actually works. llvm-svn: 136703
* Revert "Re-enable byval for ARM in clang. rdar://problem/7662569"Bob Wilson2011-08-011-10/+6
| | | | | | | | | | | This reverts commit 67d097e1232b7d66f58989c16a45b8a11721f76e. We found a miscompile with ARM byval, which is still being investigated. In the meantime, this works around the problem by disabling ARM byval. Conflicts: lib/CodeGen/TargetInfo.cpp llvm-svn: 136662
* Implement MipsABIInfo::EmitVAArg. This fix enables clang to complete compilationAkira Hatanaka2011-08-011-1/+31
| | | | | | | | | | without bailing out when va_arg is an aggregate expression. However, alignment checking needs to be added in isSafeToEliminateVarargsCast in InstCombineCalls.cpp in order to produce correct mips code (see link below). http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/042047.html llvm-svn: 136647
* Pass records with non-trivial destructors or constructors indirectly.Akira Hatanaka2011-08-011-0/+5
| | | | llvm-svn: 136630
* Fix linkage type for tentative definition of ivar offset variables (GNUstep ↵David Chisnall2011-08-011-2/+2
| | | | | | runtime) llvm-svn: 136628
* Remove some unnecessary single element array temporaries.Jay Foad2011-07-296-38/+20
| | | | llvm-svn: 136461
* Fix assertion failure in CodeGen where the input operand to an asmPeter Collingbourne2011-07-291-1/+5
| | | | | | | instruction is tied to an output operand which is a pointer, and the input operand is narrower than the output operand. llvm-svn: 136438
* Fix a couple of problems with initialization and assignment toJohn McCall2011-07-282-2/+12
| | | | | | | | | | | __block variables where the act of initialization/assignment itself causes the __block variable to be copied to the heap because the variable is of block type and is being assigned a block literal which captures the variable. rdar://problem/9814099 llvm-svn: 136337
* The lock operand to an @synchronized statement is also John McCall2011-07-271-10/+15
| | | | | | | supposed to be a full-expression; make it so. In ARC, make sure we retain the lock for the entire protected block. llvm-svn: 136271
* CodeGen: rename CodeGenModule::Runtime to ObjCRuntimePeter Collingbourne2011-07-273-14/+14
| | | | llvm-svn: 136254
* Make CodeGen for array delete involving incomplete class work without ↵Eli Friedman2011-07-271-21/+1
| | | | | | crashing. Should fix regression on g++.dg/init/delete1.C. llvm-svn: 136241
* Add support for C++0x unicode string and character literals, from Craig Topper!Douglas Gregor2011-07-271-2/+14
| | | | llvm-svn: 136210
* Clean up the analysis of the collection operand to ObjCJohn McCall2011-07-271-2/+20
| | | | | | | | | | | for-in statements; specifically, make sure to close over any temporaries or cleanups it might require. In ARC, this has implications for the lifetime of the collection, so emit it with a retain and release it upon exit from the loop. rdar://problem/9817306 llvm-svn: 136204
* Disable the optimization that skips emission of complete, non-virtualDouglas Gregor2011-07-261-5/+1
| | | | | | | | | destructors of abstract classes. It's undefined behavior to actually call the destructor (e.g., via delete), but the presence of code that calls this destructor doesn't make the program ill-formed. Fixes <rdar://problem/9819242>. llvm-svn: 136180
* Rename getInstantiationLineNumber to getExpansionLineNumber in bothChandler Carruth2011-07-252-4/+3
| | | | | | SourceManager and FullSourceLoc. llvm-svn: 135969
* Mechanically rename SourceManager::getInstantiationLoc andChandler Carruth2011-07-251-2/+2
| | | | | | | | FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. llvm-svn: 135914
* Shorten some expressions by using ArrayRef::slice().Frits van Bommel2011-07-251-6/+3
| | | | llvm-svn: 135910
* fix PR10415, tidying up IR representation of module level inline asmChris Lattner2011-07-231-0/+2
| | | | | | to avoid extraneous \n's. llvm-svn: 135862
* Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon ↵Chris Lattner2011-07-234-6/+6
| | | | | | Mulder! llvm-svn: 135855
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-2333-339/+338
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* clean up forward declarations of raw_ostream to use the new LLVM.hChris Lattner2011-07-232-5/+6
| | | | | | patch by Jon Mulder! llvm-svn: 135851
* Document the existing objc_precise_lifetime attribute.John McCall2011-07-221-18/+68
| | | | | | | | | Introduce and document a new objc_returns_inner_pointer attribute, and consume it by performing a retain+autorelease on message receivers when they're not immediately loaded from an object with precise lifetime. llvm-svn: 135764
* Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to useJay Foad2011-07-226-11/+8
| | | | | | ArrayRef. llvm-svn: 135761
* fix PR10384: C++ allows external arrays of incomplete type as well.Chris Lattner2011-07-221-0/+8
| | | | | | Many thanks to Eli for reducing this great testcase. llvm-svn: 135752
* In ARC, non-atomic getters do not need to retain and autoreleaseJohn McCall2011-07-221-17/+20
| | | | | | | their loaded values, although it still worth doing this for __weak properties to get the autoreleased-return-value optimization. llvm-svn: 135747
* Add a const overload for ObjCInterfaceDecl::all_declared_ivar_begin.Jordy Rose2011-07-225-43/+33
| | | | | | | | | This was previously not-const only because it has to lazily construct a chain of ivars the first time it is called (and after the chain is invalidated). In practice, all the clients were just const_casting their const Decls; all those now-unnecessary const_casts have been removed. llvm-svn: 135741
* Convert ConstantExpr::getGetElementPtr andJay Foad2011-07-216-14/+14
| | | | | | ConstantExpr::getInBoundsGetElementPtr to use ArrayRef. llvm-svn: 135673
* Unbreak build after API change.Benjamin Kramer2011-07-201-6/+7
| | | | llvm-svn: 135585
* add raw_ostream and Twine to LLVM.h, eliminating a ton of llvm:: qualifications.Chris Lattner2011-07-202-8/+8
| | | | llvm-svn: 135577
* now that we have a centralized place to do so, add some using declarations forChris Lattner2011-07-2011-58/+59
| | | | | | | some common llvm types: stringref and smallvector. This cleans up the codebase quite a bit. llvm-svn: 135576
* fix rdar://9780211 - Clang crashes with an assertion failure building ↵Chris Lattner2011-07-201-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | WKView.mm from WebKit This is something of a hack, the problem is as follows: 1. we instantiate both copied of RetainPtr with the two different argument types (an id and protocol-qualified id). 2. We refer to the ctor of one of the instantiations when introducing global "x", this causes us to emit an llvm::Function for a prototype whose "this" has type "RetainPtr<id<bork> >*". 3. We refer to the ctor of the other instantiation when introducing global "y", however, because it *mangles to the same name as the other ctor* we just use a bitcasted version of the llvm::Function we previously emitted. 4. We emit deferred declarations, causing us to emit the body of the ctor, however the body we emit is for RetainPtr<id>, which expects its 'this' to have an IR type of "RetainPtr<id>*". Because of the mangling collision, we don't have this case, and explode. This is really some sort of weird AST invariant violation or something, but hey a bitcast makes the pain go away. llvm-svn: 135572
* fix a case where we're using ConvertType for a memory object.Chris Lattner2011-07-201-1/+1
| | | | | | It doesn't matter in practice, but it is good to be tidy. llvm-svn: 135571
* as eli points out, we're not doing memory stuff here. While ConvertType Chris Lattner2011-07-202-3/+2
| | | | | | | and ConvertTypeForMem are the same for pointers, it is best to just use ConvertType. Thanks Eli! llvm-svn: 135567
* fix PR10395 - array decay can produce an interesting type whenChris Lattner2011-07-201-1/+4
| | | | | | | decaying an array of incomplete type (which has type [0 x i8]*) to a normal pointer (which has incompletetype*). llvm-svn: 135565
* Match createTargetMachine API change.Evan Cheng2011-07-191-11/+13
| | | | llvm-svn: 135469
* Simplify.Devang Patel2011-07-191-6/+2
| | | | llvm-svn: 135456
* Check column number also.Devang Patel2011-07-181-3/+5
| | | | llvm-svn: 135437
* Migrate LLVM and Clang to use the new makeArrayRef(...) functions where ↵Frits van Bommel2011-07-182-9/+6
| | | | | | | | previously explicit non-default constructors were used. Mostly mechanical with some manual reformatting. llvm-svn: 135390
* In C99, emit an inline function when encountering an extern redeclaration.Nick Lewycky2011-07-181-2/+15
| | | | | | Fixes PR10233! llvm-svn: 135377
* de-constify llvm::Type, patch by David Blaikie!Chris Lattner2011-07-1835-452/+452
| | | | llvm-svn: 135370
* Fix typoJoerg Sonnenberger2011-07-151-1/+1
| | | | llvm-svn: 135285
* Convert CallInst and InvokeInst APIs to use ArrayRef.Jay Foad2011-07-1511-66/+69
| | | | llvm-svn: 135265
* Fix the definition of AsTypeExpr. I'm still not sure thisJohn McCall2011-07-151-1/+1
| | | | | | | | | | is right --- shouldn't there be a TypeLoc in here somewhere? --- but at least it doesn't have a redundant QualType and a broken children() method. Noticed this while doing things in serialization. llvm-svn: 135257
* protect some calls to ConvertType when a function info is under constructionChris Lattner2011-07-151-3/+3
| | | | | | | to prevent recursive compilation problems. This fixes a failure of CodeGen/decl.c on x86-32 targets that don't fill in the coerce-to type. llvm-svn: 135256
OpenPOWER on IntegriCloud