aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2009-11-04Merge constant array and structures. This will create a global variables for ↵Tanya Lattner
arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85991 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Fix 80-col violations.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85990 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Split out return adjustments in thunks from this adjustment in thunksMike Stump
so the optimizer can tailcall into the return value adjustment thunk. This improves codesize for complex hierarchies. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85988 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Misc cleanups.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85978 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine volatile handling, specifically, we must have the canonicalMike Stump
type to look at the volatile specifier. I found these all from just hand auditing the code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85967 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine codegen for covariant thunks that return references.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85916 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine return value adjustments for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85905 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Fix documentation.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85901 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine codegen for non-virtual this adjustments for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Add virtual adjustments for this for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85852 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Add basic codegen for thunks that return values.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85842 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Refine codegen for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85839 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Refine vcall/vbase ordering with vtable construction.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85677 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Get throws limping along, still a bunch of FIXMEs. Too bad we don't support ↵Anders Carlsson
catching anything yet :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85574 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Fix thinko, mangleCXXRtti should obviously take a QualType!Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30Add CGException.cpp, to be used for exception related code generation.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85560 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30mangleCXXRtti obviously needs to take a type, what was I thinking...Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85555 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Patch for destruction of array of objects on block exit.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85512 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29make clang emit undefs for padding of structs and unions instead of zeros. ↵Nuno Lopes
this enables constant compaction optimizations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85504 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29optimize out some ifdefs.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85453 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Implement clang support for indirect branch and address of labelChris Lattner
using the new LLVM support for this. This is temporarily hiding behind horrible and ugly #ifdefs until the time when the optimizer is stable (hopefully a week or so). Until then, lets make it "opt in" :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85446 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Minor cleanup.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85434 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Code gen for array construction - WIPFariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85432 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Refactor a bit.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85424 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28factor a creation of Int32Ty.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85422 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28random tidyingChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85408 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Mangle based on the declaration we're given, not the canonicalDouglas Gregor
declaration, since attributes that affect mangling may have been added to subsequent declarations. However, to determine the linkage of the declaration, we need to look at the canonical declaration. Fixes PR4412. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28adjust for a pending LLVM change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85373 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Add mangling for VTTs.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85363 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Finish off pure virtual function handling.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85354 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Prep work for putting ___cxa_pure_virtual in the vtables for pure functions.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85345 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Refactor code a little.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Implement proper linkage for explicit instantiation declarations ofDouglas Gregor
inlined functions. For example, given template<typename T> class string { unsigned Len; public: unsigned size() const { return Len; } }; extern template class string<char>; we now give the instantiation of string<char>::size available_externally linkage (if it is ever instantiated!), as permitted by the C++0x standard. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85340 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27__builtin_object_size refinements. Ensure we handle expressions withMike Stump
side-effects up front, as when we switch to the llvm intrinsic call for __builtin_object_size later, it will have two evaluations. We also finish off the intrinsic version of the code so we can just turn it on once llvm has the intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85324 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Introduce FunctionDecl::isInlined() to tell whether a function shouldDouglas Gregor
be inlined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85307 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Rename FunctionDecl::isInline/setInline toDouglas Gregor
FunctionDecl::isInlineSpecified/setInlineSpecified. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85305 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Set OptimizeForSize LLVM function attribute with -Os.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85278 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Fix crash when synthesizing property setters when the property type and ivarDaniel Dunbar
type have mismatched Objective-C types. - <rdar://problem/7336352> [irgen] crash in synthesized property construction git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85275 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27Add a PrettyStackTraceDecl in CodeGenModule::EmitGlobalDefinition.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Prep for future __builtin_object_size refinements. The theory is thatMike Stump
someone will add an llvm intrinsic for us to use, so the optimizer can figure out the hard cases. WIP. For those that want to help, double check with Eric before starting. He has a bit of code this will plug into. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85175 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Add Code gen support for '->*' operator which fellFariborz Jahanian
through the crack. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85160 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Switch vtable to linkeonce_odr. Patch by nlewycky.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85131 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26assert -> llvm_unreachableDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85125 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-26Update location of DataTypes.h to reflect move in LLVM with r85086.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-25Fix a bug in calculating shufflevector indices when constructing vectors ↵Nate Begeman
from other vectors. If I can find it again, I will check in a testcase. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85032 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Store the builtin types as CanQualTypes. Expand a bit on the CanQual API,John McCall
but also remove some methods that cause ambiguities, and generally make CanQual<blah> more analogous to QualType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84976 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Eliminate QualifiedDeclRefExpr, which captured the notion of aDouglas Gregor
qualified reference to a declaration that is not a non-static data member or non-static member function, e.g., namespace N { int i; } int j = N::i; Instead, extend DeclRefExpr to optionally store the qualifier. Most clients won't see or care about the difference (since QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the number of top-level expression types that clients need to cope with, brings the implementation of DeclRefExpr into line with MemberExpr, and simplifies and unifies our handling of declaration references. Extended DeclRefExpr to (optionally) store explicitly-specified template arguments. This occurs when naming a declaration via a template-id (which will be stored in a TemplateIdRefExpr) that, following template argument deduction and (possibly) overload resolution, is replaced with a DeclRefExpr that refers to a template specialization but maintains the template arguments as written. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84962 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Emit calls using the canonical prototype of the called function.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84947 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Fixup the return type of functions.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84922 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Complete code gen for '.*' binary expression forFariborz Jahanian
both scalar and aggregates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84910 91177308-0d34-0410-b5e6-96231b3b80d8