summaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
AgeCommit message (Collapse)Author
2009-12-08Misc key function fixes.Eli Friedman
llvm-svn: 90831
2009-12-07A bunch more thunk fixes from misc testing.Eli Friedman
(Yes, I do intend to commit some tests for this.) llvm-svn: 90818
2009-12-06Work-in-progess rewrite of thunks: move thunk generation outside of vtableEli Friedman
generation, and make sure we generate thunks when the function is defined rather than when the vtable is defined. llvm-svn: 90722
2009-12-06Add rudimentary support for member pointers to CGDebugInfo.Anders Carlsson
llvm-svn: 90711
2009-12-04Don't emit explicit specializations of static member variable declarations.Anders Carlsson
llvm-svn: 90624
2009-11-30Have ASTRecordLayout keep track of the key function, in preparation of ↵Anders Carlsson
fixing a synthetic ctor/dtor bug. llvm-svn: 90168
2009-11-30Don't try to generate common globals for C++ files, instead of depending on ↵Daniel Dunbar
the FE to set NoCommon, and simplify CodeGenOptions initialization. llvm-svn: 90119
2009-11-26Simplify and fix up the handling of implicit constructors, copy assignmentEli Friedman
operators, and destructors. Avoids generating declarations/definitions of trivial constructors/destructors, and makes sure the trivial copy assignment operator is generated when necessary. llvm-svn: 89943
2009-11-26Use new getLinkage() method to correctly compute whether a variable hasEli Friedman
internal linkage. Fixes PR5433. llvm-svn: 89931
2009-11-24Ignore constructor member templates in CodeGenModule::EmitTopLevelDecl.Anders Carlsson
llvm-svn: 89737
2009-11-21Mangler: Lift shouldMangleDeclName predicate out of CXXNameMangler::mangle.Daniel Dunbar
- Sometimes we have to mangle things we wouldn't normally (e.g., because they appear in a template expression). - This also tidies up the predicate to be more obvious what is getting mangled. llvm-svn: 89555
2009-11-21IRgen: Switch the C++ mangler interfaces to take the SmallVector to write into,Daniel Dunbar
instead of requiring clients to make a raw_svector_ostream, which is just an implementation detail. llvm-svn: 89548
2009-11-21Sink free mangle* methods into MangleContext.Daniel Dunbar
llvm-svn: 89547
2009-11-21Added rudimentary C++0x attribute support.Alexis Hunt
The following attributes are currently supported in C++0x attribute lists (and in GNU ones as well): - align() - semantics believed to be conformant to n3000, except for redeclarations and what entities it may apply to - final - semantics believed to be conformant to CWG issue 817's proposed wording, except for redeclarations - noreturn - semantics believed to be conformant to n3000, except for redeclarations - carries_dependency - currently ignored (this is an optimization hint) llvm-svn: 89543
2009-11-20Fixup key function calculations.Mike Stump
llvm-svn: 89412
2009-11-19Improve instantiation control for rtti data and allow key functions toMike Stump
instantiate a class. WIP. llvm-svn: 89289
2009-11-17Skip over shadow using decls during codegen.John McCall
llvm-svn: 89079
2009-11-16The ssp and sspreq function attributes should only be applied to function ↵Anders Carlsson
definitions, not declarations or calls. llvm-svn: 88915
2009-11-16Make GetAddrOfConstantStringFromLiteral return a constant of the correct type.Eli Friedman
This doesn't have any visible effects at the moment because normally the implicit cast code forces the type to the expected type. llvm-svn: 88896
2009-11-12Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.Chandler Carruth
This resolves the layering violation where CodeGen depended on Frontend. llvm-svn: 86998
2009-11-09Rearrange function to avoid recursive use-after-free.Eli Friedman
llvm-svn: 86516
2009-11-07add missing #includeChris Lattner
llvm-svn: 86368
2009-11-05Added support for static variables which requireFariborz Jahanian
initialization before main. Fixes pr5396. llvm-svn: 86145
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. llvm-svn: 85340
2009-10-27Introduce FunctionDecl::isInlined() to tell whether a function shouldDouglas Gregor
be inlined. llvm-svn: 85307
2009-10-27Rename FunctionDecl::isInline/setInline toDouglas Gregor
FunctionDecl::isInlineSpecified/setInlineSpecified. llvm-svn: 85305
2009-10-27Add a PrettyStackTraceDecl in CodeGenModule::EmitGlobalDefinition.Anders Carlsson
llvm-svn: 85237
2009-10-26assert -> llvm_unreachableDouglas Gregor
llvm-svn: 85125
2009-10-18Move clients to use IdentifierInfo::getNameStart() instead of getName()Daniel Dunbar
llvm-svn: 84436
2009-10-14Fix a thinko that John pointed outDouglas Gregor
llvm-svn: 84142
2009-10-14Give explicit and implicit instantiations of static data members ofDouglas Gregor
class templates the proper linkage. Daniel, please look over the CodeGenModule bits. llvm-svn: 84140
2009-10-14Copy metadata associated with CIDevang Patel
llvm-svn: 84114
2009-10-14fix some cfstring related issues: Chris Lattner
1) -fwritable-string does affect the non-utf16 version of cfstrings just not the utf16 ones. 2) utf16 strings should always be marked constant, as the __TEXT segment is readonly. 3) The name of the global doesn't matter, remove it from TargetInfo. 4) Trust the asmprinter to drop cstrings into the right section, like llvmgcc does now. This fixes rdar://7115750 llvm-svn: 84077
2009-10-14unbreak test/CodeGen/builtins.c, reverting Devang's change.Chris Lattner
llvm-svn: 84075
2009-10-13Check void type before using replaceAllUsesWith().Devang Patel
llvm-svn: 84050
2009-10-13Remove extra white space line.Devang Patel
llvm-svn: 83979
2009-10-13Do not check use_empty() before invoking replaceAllUsesWith().Devang Patel
Let replaceAllUsesWith() adjust VHs even though there are no uses. llvm-svn: 83978
2009-10-13Simplify pointer creation with the new Type::getInt*Ptr methods.Benjamin Kramer
llvm-svn: 83964
2009-10-11Move the vtable builder to CGVtable.cpp, general cleanup.Anders Carlsson
llvm-svn: 83798
2009-10-08If a global initializer has a non-trivial constructor or destructor, we ↵Anders Carlsson
never want to defer generation of it, even if it is declared static. With this change we're finally able to compile and run the (infamous) #include <string> #include <iostream> int main(int argc, char **argv) { std::cout << "Hello, World" << std::endl; } $ clang hello.cpp -lstdc++ -o hello $ ./hello Hello, World llvm-svn: 83559
2009-10-07Add a MangleContext and pass it to all mangle functions. It will be used for ↵Anders Carlsson
keeping state, such as identifiers assigned to anonymous structs as well as scope encoding. llvm-svn: 83442
2009-10-05Fix thinko and simplify.Mike Stump
llvm-svn: 83342
2009-10-05Ensure we have atleast 2-byte alignment for member functions.Mike Stump
llvm-svn: 83337
2009-10-05Respect alignments better.Mike Stump
llvm-svn: 83328
2009-10-05Use new predicates for some type equality tests.Benjamin Kramer
llvm-svn: 83303
2009-10-01Anonymous namespaces, sema + codegen. A lot of semantics are still broken,John McCall
apparently because using directives aren't quite working correctly. llvm-svn: 83184
2009-09-23Handle namespace aliases.Anders Carlsson
llvm-svn: 82644
2009-09-22Revert "Switch a few clients over to StringLiteral::getString.", this is ↵Daniel Dunbar
breaking some projects, but I don't have a test case yet. llvm-svn: 82539
2009-09-22Switch a few clients over to StringLiteral::getString.Daniel Dunbar
- Switching all of them out-of-my-current-scope-of-interest, sorry. llvm-svn: 82515
2009-09-21Change all the Type::getAsFoo() methods to specializations of Type::getAs().John McCall
Several of the existing methods were identical to their respective specializations, and so have been removed entirely. Several more 'leaf' optimizations were introduced. The getAsFoo() methods which imposed extra conditions, like getAsObjCInterfacePointerType(), have been left in place. llvm-svn: 82501