| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 166684
|
|
|
|
|
|
|
|
| |
This is consistent/interoperable with GCC 4.7 (& __cxa_deleted_function isn't
present in 4.4 - not sure when it got added, but you'll need something with
that function available for this to work).
llvm-svn: 166069
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
be sure to delete the complete object pointer, not the original
pointer. This is necessary if the base being deleted is at a
non-zero offset in the complete object. This is only required
for objects with virtual destructors because deleting an object
via a base-class subobject when the base does not have a virtual
destructor is undefined behavior.
Noticed while reviewing the last four years of cxx-abi-dev
activity.
llvm-svn: 164597
|
|
|
|
| |
llvm-svn: 164592
|
|
|
|
|
|
| |
to forward to the correct function.
llvm-svn: 160373
|
|
|
|
| |
llvm-svn: 159091
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and only consider using __cxa_atexit in the Itanium logic. The
default logic is to use atexit().
Emit "guarded" initializers in Microsoft mode unconditionally.
This is definitely not correct, but it's closer to correct than
just not emitting the initializer.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155894
|
|
|
|
|
|
|
|
| |
what I'm going to treat as basically universal properties of
array-cookie code. Implement MS array cookies on top of that.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155886
|
|
|
|
|
|
| |
patch by Timur Iskhodzhanov.
llvm-svn: 153990
|
|
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129559
|
|
|
|
|
|
| |
My thanks to chapuni for his help in investigating this.
llvm-svn: 124351
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process, perform a number of refactorings:
- Move MiscNameMangler member functions to MangleContext
- Remove GlobalDecl dependency from MangleContext
- Make MangleContext abstract and move Itanium/Microsoft functionality
to their own classes/files
- Implement ASTContext::createMangleContext and have CodeGen use it
No (intended) functionality change.
llvm-svn: 123386
|
|
|
|
|
|
|
| |
16-bits in size. Implement this by splitting WChar into two enums, like we have
for char. This fixes a miscompmilation of XULRunner, PR8856.
llvm-svn: 122558
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pack expansions, e.g. given
template<typename... Types> struct tuple;
template<typename... Types>
struct tuple_of_refs {
typedef tuple<Types&...> types;
};
the type of the "types" typedef is a PackExpansionType whose pattern
is Types&.
This commit introduces support for creating pack expansions for
template type arguments, as above, but not for any other kind of pack
expansion, nor for any form of instantiation.
llvm-svn: 122223
|
|
|
|
|
|
|
|
| |
mangler. Now member functions and pointers thereof have their calling
convention mangled as __thiscall if they have the default CC (even though,
they technically still have the __cdecl CC).
llvm-svn: 118598
|
|
|
|
|
|
| |
Itanium guards and use a slightly different compiled-in API.
llvm-svn: 113330
|
|
|
|
|
|
|
| |
"__attribute((pascal))" or "__pascal" (and "_pascal" under
-fborland-extensions). Support still needs to be added to llvm.
llvm-svn: 112939
|
|
|
|
|
|
| |
under the ARM ABI.
llvm-svn: 112588
|
|
|
|
|
|
|
|
|
|
| |
pointers. I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.
llvm-svn: 111776
|
|
|
|
| |
llvm-svn: 111365
|
|
|
|
|
|
|
|
| |
AST library.
This also adds infrastructure for supporting multiple C++ ABIs in the AST.
llvm-svn: 111117
|
|
|
|
|
|
|
|
|
|
| |
ObjC pointers were easy enough (as far as the ABI is concerned, they're
just pointers to structs), but I had to invent a new mangling for block
pointers. This is particularly worrying with the Microsoft ABI, because
it is a vendor-specific ABI; extending it could come back to bite us
later when MS extends it on their own (and you know they will).
llvm-svn: 107572
|
|
|
|
| |
llvm-svn: 107568
|
|
|
|
| |
llvm-svn: 107567
|
|
|
|
| |
llvm-svn: 107564
|
|
|
|
|
|
|
|
|
|
|
| |
Only actual functions get mangled correctly; I don't know how to fix it for
function pointers yet. Thanks to John McCall for the hint.
Also, mangle anonymous tag types. I don't have a suitable testcase yet; I have
a feeling that that's going to need support for static locals, and I haven't
figured out exactly how MSVC's scheme for mangling those works.
llvm-svn: 107561
|
|
|
|
|
|
|
|
|
| |
doesn't mangle array parameters right), but I think that should be fixed
in Sema (Doug, John, what do you think?).
Also, stub out the remaining mangleType() routines.
llvm-svn: 107264
|
|
|
|
|
|
|
| |
Also, fix mangling of throw specs. Turns out MSVC totally ignores throw
specs when mangling names.
llvm-svn: 106937
|
|
|
|
|
|
|
| |
when block literal is declared inside a ctor/dtor.
Fixes radr 8096995.
llvm-svn: 106700
|
|
|
|
|
|
|
| |
Also, test that static members with default visibility in a struct have the
right mangling.
llvm-svn: 106276
|
|
|
|
| |
llvm-svn: 106211
|
|
|
|
| |
llvm-svn: 106081
|
|
|
|
|
|
|
|
| |
- Mangle qualifiers.
- Start mangling variables' types into the name. A variable declared with a
builtin type should now mangle properly.
llvm-svn: 105931
|
|
|
|
|
|
|
| |
- Don't mangle static variables at global scope.
- Add support for mangling builtin types. This will be used later.
llvm-svn: 105881
|
|
|
|
|
|
| |
namespace, too.
llvm-svn: 105809
|
|
|
|
|
|
|
|
|
|
|
| |
(but not their types; that's later).
NOTE: Right now, variables in the global namespace don't get mangled, even
though they're supposed to be. This is because the default mangler
implements the shouldMangleDeclName() method that tells clang not to mangle
them. This will be fixed in a later patch.
llvm-svn: 105805
|
|
|
|
|
|
| |
select either the default Itanium ABI or the new, experimental Microsoft ABI.
llvm-svn: 105804
|
|
llvm-svn: 105767
|