aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2009-04-01Nonfragile ivar synthesis with property is in a continuationFariborz Jahanian
class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68234 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Revert r68221, -ftrapv support, which causes several regressions inDouglas Gregor
Clang's test suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68230 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Add -ftrapv support, patch from David Chisnall; well all except theMike Stump
clang option code that is. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68221 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Add ConvertUTF module from http://www.unicode.org/Public/PROGRAMS/CVTUTF.Steve Naroff
#ifdef'd out the 5 conversion routines that we don't currently need. Still need a bit more work in GetAddrOfConstantCFString(). Added a FIXME to indicate this. Expect to remove the FIXME today... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68208 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01More "prep" work for handling UTF16 CFString.Steve Naroff
Patch by Jean-Daniel Dupas. Thanks! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68203 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01x86-32 Darwin ABI: Handle small structures correctly.Daniel Dunbar
- Small structures are returned in a register if: 1. They fit nicely in a register. 2. All fields fit nicely in a register. (more or less) - We now pass the first 5000 ABITests if unions are disabled. - <rdar://problem/6497882> [irgen] x86-32 ABI compatibility with small structs git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68197 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01x86-32 Darwin ABI: Single element arrays can be part of "singleDaniel Dunbar
element structures", which have different ABI rules. - Current return-arguments-32 status is: 1 out of 1000 failures (-7) - Also, vectors inside "single element structs" require special handling. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68196 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01remove ASTContext::buildObjCInterfaceType, which breaks canonical Chris Lattner
types. It is no longer needed now that the code generator re-lays-out interfaces if they are defines after being laid out from a forward decl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68194 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01x86-32 Darwin ABI: Handle direct return of vectors.Daniel Dunbar
- Current return-arguments-32 status is: 8 out of 1000 failures (-7) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68192 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix a subtle bug where the cleanup scope entries had a dangling block referenceDaniel Dunbar
- <rdar://problem/6732143> Crash when generating @synchronize for zero-cost exception - Thanks to Anders for helping track down the problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68186 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01fix the two xfails I added with a previous patch by making ObjC interfaceChris Lattner
types get completed when their definition is seen if previously laid out by the code generator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68177 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01move trivial forwarding function inline.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01tidy some code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68174 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix block comparisons. Radar 6732116.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68171 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Implement code generation of namespaces and add mangling tests.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68170 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix a bug (that I thought I had fixed already) where mangling a prefix could ↵Anders Carlsson
get us into an infinite loop git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68168 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix a mangling bug where functions with no arguments weren't getting the 'v' ↵Anders Carlsson
parameter specifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68162 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31Add Target hooks for IRgen of [cf]string literals.Daniel Dunbar
- Notably, set section on cfstring literal string data (for now, this is done everywhere because it matches what we were already doing for the CFString data itself) - <rdar://problem/6599098> [irgen] linker requires objc string data to go into cstring git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68160 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31Change UsedArray to be a vector of WeakVH to fix a dangling pointer problem ↵Chris Lattner
that occurs when attribute(used) and asm renaming are used together. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68155 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31remove some obsolete comments, use an AssertingVH.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68151 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31x86_32 Darwin ABI: Treat empty unions like empty structures.Daniel Dunbar
- Current return-arguments-32 status: 15/1000 failures git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68132 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31Patch to fix proptocol reference ir-gen for GNU runtime.Fariborz Jahanian
Patch by David Chisnal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68125 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31ir-gen support for nonfragile abi's synthesized ivars.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68122 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31More toward nonfragile abi's synthesized ivars.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68115 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31Some "prep" work for handling ObjC @-string constants that contain UTF-8. No ↵Steve Naroff
functionality change. Changed GenerateConstantString() to take an ObjCStringLiteral (instead of a std::string). While this isn't strictly necessary, it seems cleaner and allows us to cache to "containsNonAscii" if necessary (to avoid checking in both Sema and CodeGen). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68114 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31remove a dead prototypeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68105 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31remove the warning. We don't control what users do, and this codeChris Lattner
is run for perfectly reasonable things like NSString* because type layout is recursive. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68104 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31do not *copy* objc interface types, just use their reference.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68102 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31fill in temporary smallvectors instead of vectors for performance.Chris Lattner
Fix BuildAggrIvarLayout to not access vectors out of range. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31small cleanups.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68095 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Improve the representation of template names in the AST. ThisDouglas Gregor
representation handles the various ways in which one can name a template, including unqualified references ("vector"), qualified references ("std::vector"), and dependent template names ("MetaFun::template apply"). One immediate effect of this change is that the representation of nested-name-specifiers in type names for class template specializations (e.g., std::vector<int>) is more accurate. Rather than representing std::vector<int> as std::(vector<int>) we represent it as (std::vector)<int> which more closely follows the C++ grammar. Additionally, templates are no longer represented as declarations (DeclPtrTy) in Parse-Sema interactions. Instead, I've introduced a new OpaquePtr type (TemplateTy) that holds the representation of a TemplateName. This will simplify the handling of dependent template-names, once we get there. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68074 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Code gen does not yet supports __asm__ on a variableFariborz Jahanian
declaration. Reject it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68058 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Use CodeGenModule API for ObjC runtime function references.Fariborz Jahanian
Patch by David Chisnall. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68043 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-29Push DeclGroup much farther throughout the compiler. Now the variousChris Lattner
productions (except the already broken ObjC cases like @class X,Y;) in the parser that can produce more than one Decl return a DeclGroup instead of a Decl, etc. This allows elimination of the Decl::NextDeclarator field, and exposes various clients that should look at all decls in a group, but which were only looking at one (such as the dumper, printer, etc). These have been fixed. Still TODO: 1) there are some FIXME's in the code about potentially using DeclGroup for better location info. 2) ParseObjCAtDirectives should return a DeclGroup due to @class etc. 3) I'm not sure what is going on with StmtIterator.cpp, or if it can be radically simplified now. 4) I put a truly horrible hack in ParseTemplate.cpp. I plan to bring up #3/4 on the mailing list, but don't plan to tackle #1/2 in the short term. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68002 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-29Initial implementation of ARM ABI. Mostly untested. Note that I'm not Eli Friedman
really intending to take ownership of this; I wrote this mostly because I was curious about how the ARM ABI works. It should be a decent start, though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67969 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28rename some methods.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67923 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28change HandleTranslationUnit to take an ASTContext instead of TranslationUnitChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67910 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Trivial cleanup.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67899 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Move where block-related variables are initialized so that block Eli Friedman
types don't get generated when blocks aren't used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67898 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Minor cleanup.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67896 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Misc small fixes/cleanups/comment changes.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67895 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Change compound assignment operators to keep track of both the promoted Eli Friedman
LHS type and the computation result type; this encodes information into the AST which is otherwise non-obvious. Fix Sema to always come up with the right answer for both of these types. Fix IRGen and the analyzer to account for these changes. This fixes PR2601. The approach is inspired by PR2601 comment 2. Note that this changes real *= complex in CodeGen from a silent miscompilation to an explicit error. I'm not really sure that the analyzer changes are correct, or how to test them... someone more familiar with the analyzer should check those changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27Do not emit debug information for variables while generating optimized code. ↵Devang Patel
The llvm optimizer and code generator are not yet ready to support optimized code debugging. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67876 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27Finish off semantic analysis for regparm, and remove the warning. Also Eli Friedman
remove a redundant error in CodeGen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67868 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27Besides the warning, issue unsupported diagnostics in Fariborz Jahanian
ir gen. No intended change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67857 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-26- Minor change to dump of ivar layout map.Fariborz Jahanian
- Temporarily undef'ed __OBJC2__ in nonfragile objc abi mode as it was forcing ivar synthesis in a certain project which clang does not yet support. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67766 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-26most of this is plumbing to get CompileOptions down into Chris Lattner
CodeGenModule. Once there, add a new NoCommon option to it and implement -fno-common. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67735 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-25More for for objc2's ivar layout map (currentlyFariborz Jahanian
is not in use). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67713 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-25Remove -f__block as codegen for __block variables should be solid.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67697 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-25Fixup codegen for block literals that bleed copy/dispose informationMike Stump
from previous block literals. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67696 91177308-0d34-0410-b5e6-96231b3b80d8