aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2010-02-25Targets (like pic16) may have mangled the name of global variables, Sanjiv Gupta
so get the name from Var rather than the original decl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97114 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-25Remove dead code.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97109 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-25Move the vcall and vbase offset layout code out into its own class.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97107 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Get rid of 'this' adjustments from the FinalOverriders class since they can ↵Anders Carlsson
be different for the same overrider in different parts of the vtable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97068 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Improve this adjustment pointer calculation.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97067 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Make ComputeThisAdjustmentBaseOffset public for now.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97066 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Fix an iterator-invalidation bug that was causing selfhost errorsJohn McCall
on non-darwin platforms. Fixes PR6411. Test case doesn't reduce, unfortunately. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97055 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Generate correct vcall offsets when we have a primary virtual base that is ↵Anders Carlsson
not a primary base in the complete class hierarchy. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97039 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24Canonicalize parameter and return types before computing ABI info. EliminatesJohn McCall
a common source of oddities and, in theory, removes some redundant ABI computations. Also fixes a miscompile I introduced yesterday by refactoring some code and causing a slightly different code path to be taken that didn't perform *parameter* type canonicalization, just normal type canonicalization; this in turn caused a bit of ABI code to misfire because it was looking for 'double' or 'float' but received 'const float'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97030 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Emit debug info for VectorType.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96999 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Add support for the weakref attribute. We still produce "alias weak" as ↵Rafael Espindola
llvm-gcc does, but are more strict on what uses of weakref we accept. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96992 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Unconditionally support block introspection data in a new field at the endBlaine Garst
of the block descriptor field. This field is the ObjC style @encode signature of the implementation function, and was to this point conditionally provided in the block literal data structure. That provisional support is removed. Additionally, eliminate unused enumerations for the block literal flags field. The first shipping ABI unconditionally set (1<<29) but this bit is unused by the runtime, so the second ABI will unconditionally have (1<<30) set so that the runtime can in fact distinguish whether the additional data is present or not. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96989 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Make previous fix handle a few more edge cases.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96962 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23PR6400: Handle an extreme edge case in mangling correctly.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96961 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23PR6386: Fix a recent regression in IRGen of cast-to-union constructs.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96958 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Implement IsOverriderUsed. This can't be tested yet due to some other bugs :)Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96897 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Stub out IsOverriderUsed.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96883 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23More fixes. Don't try to emit a virtual base vtable if the virtual base in ↵Anders Carlsson
question is a primary virtual base of some other base. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96881 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Always emit vcall offset for the primary base, not only if it's virtual. ↵Anders Carlsson
Remove a debug printf, and add the test case that now passes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96880 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Simplify the vcall offset calculation and make it give the correct answers ↵Anders Carlsson
:) My test case now has the right values but in the wrong order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96877 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23More work on vcall offsets. We now emit the right number of vcall offsets in ↵Anders Carlsson
my local test case, but not the right values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96874 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Move BaseOffset out of the FinalOverriders class.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96853 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-23Perform two more constructor/destructor code-size optimizations:John McCall
1) emit base destructors as aliases to their unique base class destructors under some careful conditions. This is enabled for the same targets that can support complete-to-base aliases, i.e. not darwin. 2) Emit non-variadic complete constructors for classes with no virtual bases as calls to the base constructor. This is enabled on all targets and in theory can trigger in situations that the alias optimization can't (mostly involving virtual bases, mostly not yet supported). These are bundled together because I didn't think it worthwhile to split them, not because they really need to be. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96842 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-22Change the name of the vtable-debugging environment variable toDouglas Gregor
CLANG_VTABLE_DEBUG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96785 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-22Don't use NamedDecl::getNameAsCString() when dealing with C++ methods,Douglas Gregor
since they may not have normal identifiers for names. Fixes PR6369. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96784 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-21Eliminate the default arguments to ASTContext::getFunctionType(),Douglas Gregor
fixing up a few callers that thought they were propagating NoReturn information but were in fact saying something about exception specifications. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96766 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19Add the CK_UnusedFunctionPointer component kind for unused function pointers.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96695 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19More refactoring around constructor/destructor code generation.John McCall
Fix some bugs with function-try-blocks and simplify normal try-block code generation. This implementation excludes a deleting destructor's call to operator delete() from the function-try-block, which I believe is correct but which I can't find straightforward support for at a moment's glance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96670 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19Dump this-adjustments for destructors as well.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96660 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19Re-introduce the ctor/dtor alias optimization, this time hidden behind aJohn McCall
command-line option which defaults off. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96649 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19Patch removes IVars list from ObjCInterfaceDecl andFariborz Jahanian
instead relies on their DeclContext for iteration, etc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96638 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-19remove unused function & enumerationsBlaine Garst
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96635 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Revert the ctor/dtor alias optimization for now; the buildbots can detectJohn McCall
some failure here that I can't. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96612 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Make deleting and complete dtor variants defer to other dtor variants byJohn McCall
calling them as subroutines. This triggers whenever the alias optimization doesn't, i.e. when the dtor has linkonce linkage or there are virtual bases or it's the deleting dtor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96605 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Attempt to fix the 32-bit test failures.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96595 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Fix another bug and add another class.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96590 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18More work on vcall offsets.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96587 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Start stubbing out vcall offset handling.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96585 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Store the base offset of the final overrider in the OverriderInfo struct, to ↵Anders Carlsson
be used for vcall offsets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96582 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Remove some dead code.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96581 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-18Extract out function-body code generation into its own method. No functionalityJohn McCall
change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96564 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17silence warning in a cleaner wayChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96520 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Patch to remove arbitrary imporation of 'self' intoFariborz Jahanian
a block without it being used. This causes over release of objects in certain runtime-senitive apps. (fixes radar 7581175). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96501 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Did not intend to check this in.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96486 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Use proper lexcial context for newly added ivars.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96484 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Make FinalOverriders handle virtual bases correctly. Unfortunately this ↵Anders Carlsson
can't be tested just yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96481 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Handle primary bases in AddVCallOffsets.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96461 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Silence GCC warning by marking an assert-only variable as unused.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96459 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17First cut at emitting vcall offsets.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96455 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-17Emit complete constructors and destructors as aliases to base constructorsJohn McCall
and destructors when the two entities are semantically identical, i.e. when the class has no virtual base classes. We only do this for linkage types for which aliases are supported, i.e. internal and external, i.e. not linkonce. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96451 91177308-0d34-0410-b5e6-96231b3b80d8