aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2012-02-14Implement IRGen of lambda expressions which capture arrays.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150452 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-14Refactor out new function EmitInitializerForField from ↵Eli Friedman
EmitMemberInitializer. The new function will be used to initialize the fields of lambda expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150451 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Mark the cxa_guard_{abort,acquire,release} functions nounwind.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150435 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Deal with a horrible C++11 special case. If a non-literal type has a constexprRichard Smith
constructor, and that constructor is used to initialize an object of static storage duration such that all members and bases are initialized by constant expressions, constant initialization is performed. In this case, the object can still have a non-trivial destructor, and if it does, we must emit a dynamic initializer which performs no initialization and instead simply registers that destructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150419 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Add back in the code to create forward decls using temporary mdnodes.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150390 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Temporarily walk back a few of my recent debug info limiting changesEric Christopher
while reworking how we handle wanting to emit only parts of structures. Fixes PR11970. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150388 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Represent C++ direct initializers as ParenListExprs before semantic analysisSebastian Redl
instead of having a special-purpose function. - ActOnCXXDirectInitializer, which was mostly duplication of AddInitializerToDecl (leading e.g. to PR10620, which Eli fixed a few days ago), is dropped completely. - MultiInitializer, which was an ugly hack I added, is dropped again. - We now have the infrastructure in place to distinguish between int x = {1}; int x({1}); int x{1}; -- VarDecl now has getInitStyle(), which indicates which of the above was used. -- CXXConstructExpr now has a flag to indicate that it represents list- initialization, although this is not yet used. - InstantiateInitializer was renamed to SubstInitializer and simplified. - ActOnParenOrParenListExpr has been replaced by ActOnParenListExpr, which always produces a ParenListExpr. Placed that so far failed to convert that back to a ParenExpr containing comma operators have been fixed. I'm pretty sure I could have made a crashing test case before this. The end result is a (I hope) considerably cleaner design of initializers. More importantly, the fact that I can now distinguish between the various initialization kinds means that I can get the tricky generalized initializer test cases Johannes Schaub supplied to work. (This is not yet done.) This commit passed self-host, with the resulting compiler passing the tests. I hope it doesn't break more complicated code. It's a pretty big change, but one that I feel is necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150318 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Basic support for referring to captured variables from lambdas. Some simple ↵Eli Friedman
examples seem to work. Tests coming up soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150293 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Fix function prolog codegen whe coerce-to type is a struct.Evgeniy Stepanov
This changes function prolog in such a way as to avoid out-of-bounds stack store in the case when coerce-to type has a larger storage size than the real argument type. Fixes PR11905. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150238 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Remove evil const_cast that's not needed anymore.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150210 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Use SmallVector when we can instead of std::vector.Bill Wendling
This looks like it had a small, but measurable performance improvement on -O0 compile time for our ObjC tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150208 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Class objects passed by value follow the same rules as structure objects.Akira Hatanaka
Double fields of by-value class objects should be passed in floating point registers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150200 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Fix bugs in function MipsABIInfo::returnAggregateInRegs. Functions returningAkira Hatanaka
class objects follow the same rules as those returning struct objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150196 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Don't cache the artificial type for the this pointer, there's noEric Christopher
difference in the qual type. This is a workaround for the fact that the type isn't artificial but the this decl is, however, we don't have any way of representing it in the current metadata. For now, however, just don't cache the full type. Fixes rdar://10831526 and probably a couple of others. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150159 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Use RAII object for cleanups.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150147 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Refactor lambda IRGen so AggExprEmitter::VisitLambdaExpr does the right thing.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150146 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09CWG issue 1405: mutable members are allowed in literal types, but can't undergoRichard Smith
lvalue-to-rvalue conversions in constant expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150145 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Basic IRGen for LambdaExprs with captures.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150141 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09A tiny bit more lambda IRGen.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150140 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08CodeGen: Move EHPersonality from CGException.h into the cpp file, it has no ↵Benjamin Kramer
other users. While at it make it value-initializable to get rid of static ctors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150070 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08A little bit of lambda IRGen.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150058 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Constify the getClassName routine and variables that come out of it,Eric Christopher
and then use it for forward decl names. Part of rdar://10209967 and rdar://10400981 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150040 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Do not return records with non trivial destructors or copy constructors inAkira Hatanaka
registers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150035 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Use the new forward declaration scheme for records. Also add moreEric Christopher
caching of results after we create them. Fixes rdar://10809898 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150025 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Remove tabs.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150021 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Revert my patches which removed Diagnostic.h includes by moving some ↵Benjamin Kramer
operator overloads out of line. This seems to negatively affect compile time onsome ObjC tests (which use a lot of partial diagnostics I assume). I have to come up with a way to keep them inline without including Diagnostic.h everywhere. Now adding a new diagnostic requires a full rebuild of e.g. the static analyzer which doesn't even use those diagnostics. This reverts commit 6496bd10dc3a6d5e3266348f08b6e35f8184bc99. This reverts commit 7af19b817ba964ac560b50c1ed6183235f699789. This reverts commit fdd15602a42bbe26185978ef1e17019f6d969aa7. This reverts commit 00bd44d5677783527d7517c1ffe45e4d75a0f56f. This reverts commit ef9b60ffed980864a8db26ad30344be429e58ff5. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150006 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Make use of const-correct ParseCommandLineOptionsDavid Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150000 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Remove tabs.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149996 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Emit debug info for properites that are not backed by an ivar.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149995 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Switch the ObjC*Decl raw_stream overloads to take a reference, for ↵Benjamin Kramer
consistency with NamedDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149981 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Use SmallVector instead of std::vector.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149976 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Use 'ArrayRef<>' instead of 'std::vector<>&' for passed-in arguments.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149975 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Calculate the .size() of the vector once.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149974 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Reserve a moderate amount of space for the back-end arguments.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149973 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Bump up the initial vector size to avoid having to grow the vector more often.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149945 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07simplify a bunch of code to use the well-known LLVM IR types computed by ↵Chris Lattner
CodeGenModule. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149943 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Use a more efficient container for these values. Also reserve space when using aBill Wendling
std::vector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149936 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Use a SmallVector instead of std::vector. This improves compilation time inBill Wendling
445.gobmk by ~1.7%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149935 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Don't recalculate the size of the array each time through the for-loop.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149933 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Relax valid location check. This fixes a clang crash while emitting debug ↵Devang Patel
info for properties that are synthesized by the compiler by default. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149929 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06build wide strings with ConstantDataArray, just because we can.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149928 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06improve the code that handles IR generation of byte-sized string literals to ↵Chris Lattner
avoid allocating an std::string. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149924 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06use cheaper llvm APIs for various bits of IR generation.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149916 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06simplify code and smallvectorize.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149915 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Let an ivar directly refer property TAG.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149881 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Fix vector splat casts to cast element to the appropriate vector element ↵Craig Topper
before inserting into the vector. Fixes PR11930. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149855 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05reapply the patches reverted in r149477, which enable ConstantDataArray.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149801 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05Basic: import SmallString<> into clang namespaceDylan Noblesmith
(I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149799 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05Basic: import OwningPtr<> into clang namespaceDylan Noblesmith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149798 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-04Preserve alignment for Neon vld1_lane/dup and vst1_lane intrinsics.Bob Wilson
We had been generating load/store instructions with the default alignment for the vector element type, even when the pointer argument had less alignment. <rdar://problem/10538555> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149794 91177308-0d34-0410-b5e6-96231b3b80d8