summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Fixup -ftrapv to be more gcc compatible. -ftrapu (for want of aMike Stump2009-04-021-3/+17
| | | | | | | | | | better name) is the option that SmallTalk can use to intercept all overflows, including unsigned. I added some testcases so we don't break anything. Also included is another patch from David for += and friends. llvm-svn: 68267
* CodeGenModule::GetAddrOfConstantCFString():Steve Naroff2009-04-011-5/+10
| | | | | | | | | | - Finish up support for converting UTF8->UTF16 to support ObjC @"string" constants. Remove warning from CheckObjCString. As the FIXME in the test case indicates, I still have a bug to work out (apparently with \u handling). llvm-svn: 68245
* Add -ftrapv support, patch from David Chisnall; well all except theMike Stump2009-04-011-2/+115
| | | | | | clang option code that is and two bug fixes. llvm-svn: 68240
* Fixes a problem where the compiler is reporting the wrong size to the Gnu Fariborz Jahanian2009-04-011-2/+3
| | | | | | | runtime on 64-bit architectures. Patch by David Chisnall llvm-svn: 68238
* Nonfragile ivar synthesis with property is in a continuationFariborz Jahanian2009-04-011-0/+38
| | | | | | class. llvm-svn: 68234
* Revert r68221, -ftrapv support, which causes several regressions inDouglas Gregor2009-04-011-111/+0
| | | | | | Clang's test suite. llvm-svn: 68230
* Add -ftrapv support, patch from David Chisnall; well all except theMike Stump2009-04-011-0/+111
| | | | | | clang option code that is. llvm-svn: 68221
* Add ConvertUTF module from http://www.unicode.org/Public/PROGRAMS/CVTUTF.Steve Naroff2009-04-011-4/+19
| | | | | | | | | | #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... llvm-svn: 68208
* More "prep" work for handling UTF16 CFString.Steve Naroff2009-04-014-10/+8
| | | | | | Patch by Jean-Daniel Dupas. Thanks! llvm-svn: 68203
* x86-32 Darwin ABI: Handle small structures correctly.Daniel Dunbar2009-04-011-2/+68
| | | | | | | | | | | | | | - 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 llvm-svn: 68197
* x86-32 Darwin ABI: Single element arrays can be part of "singleDaniel Dunbar2009-04-011-18/+26
| | | | | | | | | | 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. llvm-svn: 68196
* remove ASTContext::buildObjCInterfaceType, which breaks canonical Chris Lattner2009-04-012-5/+2
| | | | | | | | 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. llvm-svn: 68194
* x86-32 Darwin ABI: Handle direct return of vectors.Daniel Dunbar2009-04-011-0/+22
| | | | | | - Current return-arguments-32 status is: 8 out of 1000 failures (-7) llvm-svn: 68192
* Fix a subtle bug where the cleanup scope entries had a dangling block referenceDaniel Dunbar2009-04-012-14/+32
| | | | | | | | | - <rdar://problem/6732143> Crash when generating @synchronize for zero-cost exception - Thanks to Anders for helping track down the problem. llvm-svn: 68186
* fix the two xfails I added with a previous patch by making ObjC interfaceChris Lattner2009-04-013-2/+41
| | | | | | | types get completed when their definition is seen if previously laid out by the code generator. llvm-svn: 68177
* move trivial forwarding function inline.Chris Lattner2009-04-012-7/+4
| | | | llvm-svn: 68176
* tidy some code.Chris Lattner2009-04-012-11/+9
| | | | llvm-svn: 68174
* Fix block comparisons. Radar 6732116.Mike Stump2009-04-011-7/+8
| | | | llvm-svn: 68171
* Implement code generation of namespaces and add mangling tests.Anders Carlsson2009-04-012-2/+9
| | | | llvm-svn: 68170
* Fix a bug (that I thought I had fixed already) where mangling a prefix could ↵Anders Carlsson2009-04-011-2/+2
| | | | | | get us into an infinite loop llvm-svn: 68168
* Fix a mangling bug where functions with no arguments weren't getting the 'v' ↵Anders Carlsson2009-04-011-0/+5
| | | | | | parameter specifier. llvm-svn: 68162
* Add Target hooks for IRgen of [cf]string literals.Daniel Dunbar2009-03-311-18/+29
| | | | | | | | | | | - 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 llvm-svn: 68160
* Change UsedArray to be a vector of WeakVH to fix a dangling pointer problem ↵Chris Lattner2009-03-312-10/+15
| | | | | | | | that occurs when attribute(used) and asm renaming are used together. llvm-svn: 68155
* remove some obsolete comments, use an AssertingVH.Chris Lattner2009-03-313-20/+7
| | | | llvm-svn: 68151
* x86_32 Darwin ABI: Treat empty unions like empty structures.Daniel Dunbar2009-03-311-5/+5
| | | | | | - Current return-arguments-32 status: 15/1000 failures llvm-svn: 68132
* Patch to fix proptocol reference ir-gen for GNU runtime.Fariborz Jahanian2009-03-311-2/+39
| | | | | | Patch by David Chisnal. llvm-svn: 68125
* ir-gen support for nonfragile abi's synthesized ivars.Fariborz Jahanian2009-03-311-4/+17
| | | | llvm-svn: 68122
* More toward nonfragile abi's synthesized ivars.Fariborz Jahanian2009-03-311-0/+8
| | | | llvm-svn: 68115
* Some "prep" work for handling ObjC @-string constants that contain UTF-8. No ↵Steve Naroff2009-03-315-12/+17
| | | | | | | | 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). llvm-svn: 68114
* remove a dead prototypeChris Lattner2009-03-312-7/+6
| | | | llvm-svn: 68105
* remove the warning. We don't control what users do, and this codeChris Lattner2009-03-311-6/+0
| | | | | | | is run for perfectly reasonable things like NSString* because type layout is recursive. llvm-svn: 68104
* do not *copy* objc interface types, just use their reference.Chris Lattner2009-03-311-12/+8
| | | | llvm-svn: 68102
* fill in temporary smallvectors instead of vectors for performance.Chris Lattner2009-03-311-32/+29
| | | | | | Fix BuildAggrIvarLayout to not access vectors out of range. llvm-svn: 68101
* small cleanups.Chris Lattner2009-03-311-9/+7
| | | | llvm-svn: 68095
* Improve the representation of template names in the AST. ThisDouglas Gregor2009-03-302-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 68074
* Code gen does not yet supports __asm__ on a variableFariborz Jahanian2009-03-301-0/+3
| | | | | | declaration. Reject it. llvm-svn: 68058
* Use CodeGenModule API for ObjC runtime function references.Fariborz Jahanian2009-03-301-14/+28
| | | | | | Patch by David Chisnall. llvm-svn: 68043
* Push DeclGroup much farther throughout the compiler. Now the variousChris Lattner2009-03-291-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 68002
* Initial implementation of ARM ABI. Mostly untested. Note that I'm not Eli Friedman2009-03-291-0/+88
| | | | | | | | 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. llvm-svn: 67969
* rename some methods.Chris Lattner2009-03-281-1/+1
| | | | llvm-svn: 67923
* change HandleTranslationUnit to take an ASTContext instead of TranslationUnitChris Lattner2009-03-281-1/+1
| | | | llvm-svn: 67910
* Trivial cleanup.Eli Friedman2009-03-281-2/+2
| | | | llvm-svn: 67899
* Move where block-related variables are initialized so that block Eli Friedman2009-03-282-10/+10
| | | | | | types don't get generated when blocks aren't used. llvm-svn: 67898
* Minor cleanup.Eli Friedman2009-03-281-11/+1
| | | | llvm-svn: 67896
* Misc small fixes/cleanups/comment changes.Eli Friedman2009-03-281-20/+28
| | | | llvm-svn: 67895
* Change compound assignment operators to keep track of both the promoted Eli Friedman2009-03-282-63/+18
| | | | | | | | | | | | | | | | | 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. llvm-svn: 67889
* Do not emit debug information for variables while generating optimized code. ↵Devang Patel2009-03-272-0/+17
| | | | | | The llvm optimizer and code generator are not yet ready to support optimized code debugging. llvm-svn: 67876
* Finish off semantic analysis for regparm, and remove the warning. Also Eli Friedman2009-03-271-3/+0
| | | | | | remove a redundant error in CodeGen. llvm-svn: 67868
* Besides the warning, issue unsupported diagnostics in Fariborz Jahanian2009-03-271-0/+6
| | | | | | ir gen. No intended change in functionality. llvm-svn: 67857
* - Minor change to dump of ivar layout map.Fariborz Jahanian2009-03-261-1/+4
| | | | | | | | - 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. llvm-svn: 67766
OpenPOWER on IntegriCloud