aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/Mangle.cpp
AgeCommit message (Collapse)Author
2009-12-16Mangle CXXOperatorCallExprs, fixes PR5796.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91507 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-14Mangle unary, binary and ternary expressions correctly.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91257 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-12Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gaveJeffrey Yasskin
no extra safety anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91207 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-11Make sure mangling doesn't crash in another case. Add some more tests.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91149 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-11Fix for PR5706: let mangleName deal with mangling names without identifiersEli Friedman
correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91136 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-10Mangle static variables inside Objective-C methods in Objective-C++. We ↵Anders Carlsson
currently mangle them the same way as gcc does. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91042 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07Mangle basic_ostream and basic_iostream specializations.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90794 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Fix "using typename" and the instantiation of non-dependent using declarations.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90614 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Put in FIXME that this mangling is not official in.Sean Hunt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90594 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Switch mangling of literal operator names to a string that'sSean Hunt
a) legal b) likely to be chosen as the official mangling This will break ABI compatibility with all literal operator names, so you may need to recompile any such code. Sorry. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90587 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Correctly mangle the 'std' namespace inside extern "C++" blocks.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90544 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Note a failure I saw from the g++ testsuite:Mike Stump
FAIL: g++.old-deja/g++.mike/eh23.C (test for excess errors) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90374 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Work-in-progress: teach mangler how to mangle thunks for destructors.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90360 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Fix for PR5522 and PR5666: fix a bunch of mangling issues with extern variablesEli Friedman
and funcctions declared locally within a function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Change rtti/Rtti to RTTI, as it is an acronym.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90334 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-29Add DeclarationName support for C++0x operator literals. They should now work asSean Hunt
function names outside of templates - they'll probably cause some damage there as they're largely untested. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90064 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-28Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90044 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-26Add a CovariantThunkAdjustment struct that represents the adjustments needed ↵Anders Carlsson
for a covariant thunk. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89933 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-26Move the mangler into the CodeGen namespace. Change mangleThunk to take a ↵Anders Carlsson
ThunkAdjustment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89930 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-26Add a ThunkAdjustment struct which holds a non-virtual and a virtual ↵Anders Carlsson
adjustment offset. Start using it. General cleanup in Mangle.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89925 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-24When mangling a ctor/dtor we need to take into consideration whether it's a ↵Anders Carlsson
member template. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89741 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21This patch implements objective-c's 'SEL' type as a built-inFariborz Jahanian
type and fixes a long-standing code gen. crash reported in at least two PRs and a radar. (radar 7405040 and pr5025). There are couple of remaining issues that I would like for Ted. and Doug to look at: Ted, please look at failure in Analysis/MissingDealloc.m. I have temporarily added an expected-warning to make the test pass. This tests has a declaration of 'SEL' type which may not co-exist with the new changes. Doug, please look at a FIXME in PCHWriter.cpp/PCHReader.cpp. I think the changes which I have ifdef'ed out are correct. They need be considered for in a few Indexer/PCH test cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89561 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Mangler: Sketch mangling for TemplateArgument::Declaration kind.Daniel Dunbar
- Several important FIXMEs related to whether arguments are expressions or external names, and the mangling of extern "C" names (c.f., PR5522). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89556 91177308-0d34-0410-b5e6-96231b3b80d8
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89555 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Mangler: Strengthen invariants, MangleContext::mangleName should only be ↵Daniel Dunbar
called on var or function decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89554 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Mangler: Inline a bunch of functions into their sole caller, not that I ↵Daniel Dunbar
don't love typing for typings sake, but... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89553 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Remove dead variable.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89551 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Mangler: Split isStdNamespace for when the caller already has a NamespaceDecl.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89550 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21IRgen: Eliminate CXXNameMangler::mangleCXX{C,D}tor.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89549 91177308-0d34-0410-b5e6-96231b3b80d8
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89548 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Sink free mangle* methods into MangleContext.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89547 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-21Delete trailing space.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89545 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-19Draw a brighter line between "unresolved" expressions, where we have done theJohn McCall
appropriate lookup and simply can't resolve the referrent yet, and "dependent scope" expressions, where we can't do the lookup yet because the entity we need to look into is a dependent type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89402 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16First part of changes to eliminate problems with cv-qualifiers andDouglas Gregor
sugared types. The basic problem is that our qualifier accessors (getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at the current QualType and not at any qualifiers that come from sugared types, meaning that we won't see these qualifiers through, e.g., typedefs: typedef const int CInt; typedef CInt Self; Self.isConstQualified() currently returns false! Various bugs (e.g., PR5383) have cropped up all over the front end due to such problems. I'm addressing this problem by splitting each qualifier accessor into two versions: - the "local" version only returns qualifiers on this particular QualType instance - the "normal" version that will eventually combine qualifiers from this QualType instance with the qualifiers on the canonical type to produce the full set of qualifiers. This commit adds the local versions and switches a few callers from the "normal" version (e.g., isConstQualified) over to the "local" version (e.g., isLocalConstQualified) when that is the right thing to do, e.g., because we're printing or serializing the qualifiers. Also, switch a bunch of Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType() expressions over to Context.hasSameUnqualifiedType(T1, T2) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88969 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-15Implement typeid for class types.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88843 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-14Mangling support for typeinfo names.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88726 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-10Finish off mangling for the VTT.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86647 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-10Add mangling for the construction vtable.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86643 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07Always mangle functions with special names. Fixes PR5420.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86350 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-07When looking up and adding substitutions to the substitution table, make ↵Anders Carlsson
sure to always use the canonical declaration. With tihs change, FileCheck compiles and links but crashes during startup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86339 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06Handle ParenExprs in mangleExpression.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86218 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-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-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-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-22When building types from declarators, instead of building two types (one forJohn McCall
the DeclaratorInfo, one for semantic analysis), just build a single type whose canonical type will reflect the semantic analysis (assuming the type is well-formed, of course). To make that work, make a few changes to the type system: * allow the nominal pointee type of a reference type to be a (possibly sugared) reference type. Also, preserve the original spelling of the reference type. Both of these can be ignored on canonical reference types. * Remove ObjCProtocolListType and preserve the associated source information on the various ObjC TypeLocs. Preserve the spelling of protocol lists except in the canonical form. * Preserve some level of source type structure on parameter types, but canonicalize on the canonical function type. This is still a WIP. Drops code size, makes strides towards accurate source location representation, slight (~1.7%) progression on Cocoa.h because of complexity drop. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18PR5218: Replace IdentifierInfo::getName with StringRef version, now that clientsDaniel Dunbar
are updated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84447 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Move misc clients to IdentifierInfo StringRef API.Daniel Dunbar
- strcmp -> == - OS.write(II->getName() ...) -> OS << II->getNameStr() - Avoid std::string concatenation - Use getNameStr().str() when an std::string is really needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84437 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Builtin types are subsitutable if they are qualified. Fixes PR5196.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11Change mangleCXXVtable and mangleCXXRtti to take CXXRecordDecls instead of ↵Anders Carlsson
QualTypes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83793 91177308-0d34-0410-b5e6-96231b3b80d8