33337ca4d89605025818daf83390ab4271d598d9 |
|
06-May-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update aosp/master clang for rebase to r235153 Change-Id: Ia94bbcb6da7c75b6e7c2afedd1001094d62a7324
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3ea9e33ea25e0c2b12db56418ba3f994eb662c04 |
|
08-Apr-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update aosp/master clang for rebase to r233350 Change-Id: I12d4823f10bc9e445b8b86e7721b71f98d1df442
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0e2c34f92f00628d48968dfea096d36381f494cb |
|
23-Mar-2015 |
Stephen Hines <srhines@google.com> |
Update aosp/master clang for rebase to r230699. Change-Id: I6a546ab3d4ae37119eebb735e102cca4f80ab520
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
176edba5311f6eff0cad2631449885ddf4fbc9ea |
|
01-Dec-2014 |
Stephen Hines <srhines@google.com> |
Update aosp/master Clang for rebase to r222490. Change-Id: Ic557ac55e97fbf6ee08771c7b7c3594777b0aefd
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c568f1e98938584c0ef0b12ae5018ff7d90a4072 |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for rebase to r212749. This also fixes a small issue with arm_neon.h not being generated always. Includes a cherry-pick of: r213450 - fixes mac-specific header issue r213126 - removes a default -Bsymbolic on Android Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for 3.5 rebase (r209713). Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
651f13cea278ec967336033dd032faef0e9fc2ec |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Updated to Clang 3.5a. Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
58b6db76adab8dee2e64fbc300360f9b46c561ba |
|
06-Nov-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Fix PR17738 - add support for vtordisp thunks when using -cxx-abi microsoft git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
5f0db587078b5af32fc9ac41fe4276b80918fd8d |
|
05-Nov-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Fix vbtable indices when a class shares the vbptr with a non-virtual base git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c70cc5d90403f99ccce5cab3a6c022ad9cdcb66c |
|
30-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Make thunk this/return adjustment ABI-specific. Also, fix the return adjustment when using -cxx-abi microsoft Reviewed at http://llvm-reviews.chandlerc.com/D2026 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f07465828da2a07297646a2277ba8fe3abd2d4c3 |
|
09-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Code cleanup: rename VTableContext to ItaniumVTableContext, VTableBuilder to ItaniumVTableBuilder and clang-format code around git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2cb17a06befb61b1434aaa991652fea4338c95d7 |
|
09-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Reland 192220 "Abstract out parts of thunk emission code, add support for simple thunks when using -cxx-abi microsoft" with relaxed assertions git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0ac66c03c01ae95bc34cca71067ba8dd65e06a1d |
|
08-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Revert 192220 as it fails on an assertion git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c3dcfa20f8ec56fad90ffe42d0f4bc0168a2e138 |
|
08-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Abstract out parts of thunk emission code, add support for simple thunks when using -cxx-abi microsoft Reviewed at http://llvm-reviews.chandlerc.com/D1787 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192220 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
11f22a35b7f08a8d017f6ab26e440edffc930f96 |
|
03-Oct-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Extract ABI-specific parts of MangleContext into separate classes Reviewed at http://llvm-reviews.chandlerc.com/D1807 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
a53d7a0259ff88f78ba8ecac7d0cb3ea96302b1d |
|
27-Sep-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Abstract out the emission of vtables, add basic support for vtable emission when using -cxx-abi microsoft Reviewed at http://llvm-reviews.chandlerc.com/D1532 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
942f9fe11d3a9583eef6bc4ca2549b1f0d1694da |
|
10-Sep-2013 |
Reid Kleckner <reid@kleckner.net> |
[ms-cxxabi] Implement guard variables for static initialization Static locals requiring initialization are not thread safe on Windows. Unfortunately, it's possible to create static locals that are actually externally visible with inline functions and templates. As a result, we have to implement an initialization guard scheme that is compatible with TUs built by MSVC, which makes thread safety prohibitively difficult. MSVC's scheme is that every function that requires a guard gets an i32 bitfield. Each static local is assigned a bit that indicates if it has been initialized, up to 32 bits, at which point a new bitfield is created. MSVC rejects inline functions with more than 32 static locals, and the externally visible mangling (?_B) only allows for one guard variable per function. On Eli's recommendation, I used MangleNumberingContext to track which bit each static corresponds to. Implements PR16888. Reviewers: rjmccall, eli.friedman Differential Revision: http://llvm-reviews.chandlerc.com/D1416 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c7971a9efdf9880448a69aabb5182c3c27eecf6d |
|
28-Aug-2013 |
David Blaikie <dblaikie@gmail.com> |
Revert "PR14569: Omit debug info for thunks" This reverts commit r189320. Alexey Samsonov and Dmitry Vyukov presented some arguments for keeping these around - though it still seems like those tasks could be solved by a tool just using the symbol table. In a very small number of cases, thunks may be inlined & debug info might be able to save profilers & similar tools from misclassifying those cases as part of the caller. The extra changes here plumb through the VarDecl for various cases to CodeGenFunction - this provides better fidelity through a few APIs but generally just causes the CGF::StartFunction to fallback to using the name of the IR function as the name in the debug info. The changes to debug-info-global-ctor-dtor.cpp seem like goodness. The two names that go missing (in favor of only emitting those names as linkage names) are names that can be demangled - emitting them only as the linkage name should encourage tools to do just that. Again, thanks to Dinesh Dwivedi for investigation/work on this issue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
8f189a9911a992a5c4118c3789485a85bd96e045 |
|
21-Aug-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Abstract out virtual calls and virtual function prologue code generation; implement them for -cxx-abi microsoft git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188870 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
bb1b797d2e432293563747bd9704b22cf0787061 |
|
04-Aug-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Emit the constructor for abstract classes when using -cxx-abi microsoft, fixes PR16735 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
21fe45076c371e9a9f27e15c4e068e77a185fe62 |
|
24-Jul-2013 |
Mark Seaborn <mseaborn@chromium.org> |
Use ARM-style representation for C++ method pointers under PNaCl/Emscripten Before this change, Clang uses the x86 representation for C++ method pointers when generating code for PNaCl. However, the resulting code will assume that function pointers are 0 mod 2. This assumption is not safe for PNaCl, where function pointers could have any value (especially in future sandboxing models). So, switch to using the ARM representation for PNaCl code, which makes no assumptions about the alignment of function pointers. Since we're changing the "le32" target, this change also applies to Emscripten. The change is beneficial for Emscripten too. Emscripten has a workaround to make function pointers 0 mod 2. This change would allow the workaround to be removed. See: https://code.google.com/p/nativeclient/issues/detail?id=3450 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
a4130baad9d10b7feabb7e003da53424e986d269 |
|
22-Jul-2013 |
Reid Kleckner <reid@kleckner.net> |
[ms-cxxabi] Emit linkonce complete dtors in TUs that need them Based on Peter Collingbourne's destructor patches. Prior to this change, clang was considering ?1 to be the complete destructor and the base destructor, which was wrong. This lead to crashes when clang tried to emit two LLVM functions with the same name. In this ABI, TUs with non-inline dtors might not emit a complete destructor. They are emitted as inline thunks in TUs that need them, and they always delegate to the base dtors of the complete class and its virtual bases. This change uses the DeferredDecls machinery to emit complete dtors as needed. Currently in clang try body destructors can catch exceptions thrown by virtual base destructors. In the Microsoft C++ ABI, clang may not have the destructor definition, in which case clang won't wrap the virtual virtual base destructor calls in a try-catch. Diagnosing this in user code is TODO. Finally, for classes that don't use virtual inheritance, MSVC always calls the base destructor (?1) directly. This is a useful code size optimization that avoids emitting lots of extra thunks or aliases. Implementing it also means our existing tests continue to pass, and is consistent with MSVC's output. We can do the same for Itanium by tweaking GetAddrOfCXXDestructor, but it will require further testing. Reviewers: rjmccall CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1066 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
6e007f9fa0b9ebe5898025010c5ebc7d82decfa7 |
|
19-Jul-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Simplify the CodeGenFunction::Build*Virtual*Call family of functions git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3b50e8d78c34fc57e25781015a2cb0536ca54f89 |
|
30-Jun-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Restore r184205 and associated commits (after commit of r185290) This allows clang to use the backend parameter attribute 'returned' when generating 'this'-returning constructors and destructors in ARM and MSVC C++ ABIs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e1e35f761970fd662696b803a839c1f4a56f61b2 |
|
28-Jun-2013 |
Peter Collingbourne <peter@pcc.me.uk> |
[ms-cxxabi] Move CodeGenVTables::needsVTTParameter to ItaniumCXXABI. This function only makes sense there. Eventually it should no longer be part of the CGCXXABI interface, as it is an Itanium-specific detail. Differential Revision: http://llvm-reviews.chandlerc.com/D821 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185213 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3258abc2bad74e8bb1799d124bc4113c7234fa42 |
|
20-Jun-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Revert r184205 and associated patches while investigating issue with broken buildbot (possible interaction with LTO) <rdar://problem/14209661> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
4444dbbb96ba55ff8a05a1918627f609a387db9f |
|
19-Jun-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Corrections to r184205 ('this'-return optimization) due to the wrong version of the patch being committed originally. 1) Removed useless return value of CGCXXABI::EmitConstructorCall and CGCXXABI::EmitVirtualDestructorCall and implementations 2) Corrected last portion of CodeGenCXX/constructor-destructor-return-this to correctly test for non-'this'-return of virtual destructor calls git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184330 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
9063302a82423cb83f002257a416741850739a70 |
|
19-Jun-2013 |
Reid Kleckner <reid@kleckner.net> |
[ms-cxxabi] Emit and install appropriately mangled vbtables In Itanium, dynamic classes have one vtable with several different address points for dynamic base classes that can't share vtables. In the MS C++ ABI, each vbtable that can't be shared gets its own symbol, similar to how ctor vtables work in Itanium. However, instead of mangling the subobject offset into the symbol, the unique portions of the inheritance path are mangled into the symbol to make it unique. This patch implements the MSVC 2012 scheme for forming unique vbtable symbol names. MSVC 2010 use the same mangling with a different subset of the path. Implementing that mangling and possibly others is TODO. Each vbtable is an array of i32 offsets from the vbptr that points to it to another virtual base subobject. The first entry of a vbtable always points to the base of the current subobject, implying that it is the same no matter which parent class contains it. Reviewers: rjmccall Differential Revision: http://llvm-reviews.chandlerc.com/D636 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
d4c0cd07641681de6ed12164aa7a4495ab4b18e5 |
|
18-Jun-2013 |
Stephen Lin <stephenwlin@gmail.com> |
CodeGen: Have 'this'-returning constructors and destructors to take advantage of the new backend 'returned' attribute. The backend will now use the generic 'returned' attribute to form tail calls where possible, as well as avoid save-restores of 'this' in some cases (specifically the cases that matter for the ARM C++ ABI). This patch also reverts a prior front-end only partial implementation of these optimizations, since it's no longer required. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184205 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
b0f533e716ae5a21ca5682ea235a68082fd5ed28 |
|
29-May-2013 |
Reid Kleckner <reid@kleckner.net> |
[ms-cxxabi] Implement MSVC virtual base adjustment While we can't yet emit vbtables, this allows us to find virtual bases of objects constructed in other TUs. This make iostream hello world work, since basic_ostream virtually inherits from basic_ios. Differential Revision: http://llvm-reviews.chandlerc.com/D795 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182870 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f632730ffb0b8ca531a35e737b29cc9f9774ca1d |
|
09-May-2013 |
Reid Kleckner <reid@kleckner.net> |
[ms-cxxabi] Implement member pointer conversions Summary: This only supports converting along non-virtual inheritance paths by changing the field offset or the non-virtual base adjustment. This implements three kinds of conversions: - codegen for Value conversions - Constant emission for APValue - Constant folding for CastExprs In almost all constant initialization settings EmitMemberPointer(APValue) is called, except when the expression contains a reinterpret cast. reinterpret casts end up being a big corner case because the null value changes between different kinds of member pointers. Reviewers: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D741 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181543 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
4e3b54b4acb4dd926ca50d7f06c8265d1d24ba79 |
|
02-May-2013 |
Bill Wendling <isanbard@gmail.com> |
Use the Itanium ABI for thread_local on Darwin. After some discussion, it was decided to use the Itanium ABI for thread_local on Darwin OS X platforms. This involved a couple of changes. First, we use "_tlv_atexit" instead of "__cxa_thread_atexit". Secondly, the global variables are marked with 'internal' linkage, because we want all access to be calls to the Itanium-specific entry point, which has normal linkage. <rdar://problem/13733006> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
b80a16eadd0dacabfc1c32412e243ccb99dd664d |
|
19-Apr-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Implement CodeGen for C++11 thread_local, following the Itanium ABI specification as discussed on cxx-abi-dev. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ed23bdf69dd63e4fd01c02b12a13d1e6cbff9c2f |
|
17-Apr-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Set SRet flags properly in '-cxx-abi microsoft'. Also, - abstract out the indirect/in memory/in registers decisions into the CGCXXABI - fix handling of empty struct arguments for '-cxx-abi microsoft' - add/fix tests git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179681 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
64aa4b3ec7e62288e2e66c1935487ece995ca94b |
|
17-Apr-2013 |
John McCall <rjmccall@apple.com> |
Standardize accesses to the TargetInfo in IR-gen. Patch by Stephen Lin! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
04e517650569598e847c2ab609672e6df93effe5 |
|
15-Apr-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
CodeGen support for function-local static thread_local variables with non-constant constructors or non-trivial destructors. Plus bugfixes for thread_local references bound to temporaries (the temporaries themselves are lifetime-extended to become thread_local), and the corresponding case for std::initializer_list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
92e44d911c748f2ef0d578bbf7b0703fb2ed4d9c |
|
22-Mar-2013 |
Reid Kleckner <reid@kleckner.net> |
[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching it As the comment says, it's a little silly to cache it in the ABI code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
63fd408a61ae9b94e8d8a986832f526f7cdbfa84 |
|
20-Mar-2013 |
Manman Ren <mren@apple.com> |
Exploit this-return of a callsite in a this-return function. For constructors/desctructors that return 'this', if there exists a callsite that returns 'this' and is immediately before the return instruction, make sure we are using the return value from the callsite. We don't need to keep 'this' alive through the callsite. It also enables optimizations in the backend, such as tail call optimization. Updated from r177211. rdar://12818789 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177541 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
7cd84baa533ae337e3eb6b7951d94ce94093d521 |
|
16-Mar-2013 |
Manman Ren <mren@apple.com> |
revert r177211 due to its potential issues git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2710ed8fd997be04ff447b8be2190f8fb34ac22b |
|
16-Mar-2013 |
Manman Ren <mren@apple.com> |
Exploit this-return of a callsite in a this-return function. For constructors/desctructors that return 'this', if there exists a callsite that returns 'this' and is immediately before the return instruction, make sure we are using the return value from the callsite. We don't need to keep 'this' alive through the callsite. It also enables optimizations in the backend, such as tail call optimization. rdar://12818789 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
bd7370a78604e9a20d698bfe328c1e43f12a0613 |
|
28-Feb-2013 |
John McCall <rjmccall@apple.com> |
Use the actual ABI-determined C calling convention for runtime calls and declarations. LLVM has a default CC determined by the target triple. This is not always the actual default CC for the ABI we've been asked to target, and so we sometimes find ourselves annotating all user functions with an explicit calling convention. Since these calling conventions usually agree for the simple set of argument types passed to most runtime functions, using the LLVM-default CC in principle has no effect. However, the LLVM optimizer goes into histrionics if it sees this kind of formal CC mismatch, since it has no concept of CC compatibility. Therefore, if this module happens to define the "runtime" function, or got LTO'ed with such a definition, we can miscompile; so it's quite important to get this right. Defining runtime functions locally is quite common in embedded applications. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
1d4fff5551c2347010b955b4337a2aa7d65a050e |
|
27-Feb-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Better support for constructors with -cxx-abi microsoft, partly fixes PR12784 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176186 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0f9827f5d6248d7008063768eb5f2c3e6ba83e94 |
|
15-Feb-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Abstract out emitting the vdtor calls and do it properly when using -cxx-abi microsoft; also fix vdtor calls for the ARM ABI git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c264e16a42b3f6c36521857a29ea0949d9781c22 |
|
31-Jan-2013 |
Tim Northover <Tim.Northover@arm.com> |
Add support for AArch64 target. In cooperation with the LLVM patch, this should implement all scalar front-end parts of the C and C++ ABIs for AArch64. This patch excludes the NEON support also reviewed due to an outbreak of batshit insanity in our legal department. That will be committed soon bringing the changes to precisely what has been approved. Further reviews would be gratefully received. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c4c62fd78a4728c9e4d4df14911a2ced9bdd2031 |
|
31-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Make sure that the Attribute object represents one attribute only. Several places were still treating the Attribute object as respresenting multiple attributes. Those places now use the AttributeSet to represent multiple attributes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174004 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f3bbb155beb69cdad1c6b0472bc0ca20cece6c50 |
|
26-Jan-2013 |
John McCall <rjmccall@apple.com> |
ARM says that the array cookie should always be eight bytes. ARM is not thinking about over-aligned structures. Overrule ARM in both our generic-ARM and iOS ABI implementations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
96fcde0b8ed8bdf99d326312ca7be6447b0fe5fc |
|
26-Jan-2013 |
John McCall <rjmccall@apple.com> |
Move the decision about the kind of CGCXXABI to make inside the family-specific files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173530 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
d5617eeafc93209a26b9f88276c88cf997c3a0a7 |
|
25-Jan-2013 |
John McCall <rjmccall@apple.com> |
The standard ARM C++ ABI dictates that inline functions are never key functions. We did not implement that rule for the iOS ABI, which was driven by what was implemented in gcc-4.2. However, implement it now for other ARM-based platforms. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173515 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3b844ba7d5be205a9b4f5f0b0d1b7978977f4b8c |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to reflect the migration in r171366. Re-sort the #include lines to reflect the new paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
72390b39c545426023ec104afe8706395d732bad |
|
20-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Rename llvm::Attributes to llvm::Attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170722 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ad017fa7a4df7389d245d02a49b3c79ed70bedb9 |
|
20-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Revert r170500. It over-zealously converted *ALL* things named Attributes, which is wrong here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
094dbf917127a1228147587076d59ca45b7c258d |
|
19-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
55fc873017f10f6f566b182b70f6fc22aefa3464 |
|
04-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Sort all of Clang's files under 'lib', and fix up the broken headers uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
7edf9e38b91917b661277601c0e448eef0eb2b56 |
|
01-Nov-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Simplify: replace getContext().getLangOpts() with just getLangOpts(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
956a5a17713deb1b5b27893303c4f308a1bd2a62 |
|
25-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Cleanup some clang code to use new type functions instead of using cast<>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2eb9a959d24ad757a82ecab61f343635ad67749a |
|
17-Oct-2012 |
David Blaikie <dblaikie@gmail.com> |
PR13684: Emit vtable entries for deleted functions as __cxa_deleted_function. 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). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
a6375560645177168099f1a1d96be8fa4718aa8e |
|
16-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Use the Attributes::get method which takes an AttrVal value directly to simplify the code a bit. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0d5833921cc728bc1d2e45fbaf7b3e11cddbf99d |
|
15-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Move the Attributes::Builder outside of the Attributes class and into its own class named AttrBuilder. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
50e6b18f99c45b31e6216ab221f6b3911b24fa1f |
|
15-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Attributes Rewrite Convert the uses of the Attributes class over to the new format. The Attributes::get method call now takes an LLVM context so that the attributes object can be uniquified and stored. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
603571a2d6daca43162bf1d9469baf919697c00a |
|
10-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the final bits of Attributes being declared in the Attribute namespace. Use the attribute's enum value instead. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
25a6a84cf5067b32c271e3ba078676dee838798d |
|
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ecd03b447bb0e2ed1954c77441d49a4a17ca8138 |
|
25-Sep-2012 |
John McCall <rjmccall@apple.com> |
When performing a ::delete of an object with a virtual destructor, 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ba77cb9c82cc9d498e4d6474d128007249f07871 |
|
15-Sep-2012 |
Craig Topper <craig.topper@gmail.com> |
Fix includes of llvm and clang files that used angle brackets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163980 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
285baac67d722beb6854f5faa45ee1aa62a7ce92 |
|
17-Jul-2012 |
Joao Matos <ripzonetriton@gmail.com> |
[Windows] Abstract pure virtual method calls in the ABI. Fix the Windows ABI to forward to the correct function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
9ee494f98610dcd79441dce469d7bf609fcd7b92 |
|
24-Jun-2012 |
Charles Davis <cdavis@mines.edu> |
IRGen: Factor v-table generation into the CGCXXABI object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
20bb175cb8ae5844034828db094fb948c0e3454a |
|
01-May-2012 |
John McCall <rjmccall@apple.com> |
Abstract the emission of global destructors into ABI-specific code 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! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e2b45e2a43ae46bc00026b63ba7c04ef2b78c3ff |
|
01-May-2012 |
John McCall <rjmccall@apple.com> |
Refactor the C++ ABI code a little bit to take advantage of 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! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155886 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
355bba72ca52c4a70ca3c3802412c03a6ec31f24 |
|
30-Mar-2012 |
John McCall <rjmccall@apple.com> |
Make sure we unique static-local decls across multiple emissions of the function body, but do so in a way that doesn't make any assumptions about the static local actually having a proper, unique mangling, since apparently we don't do that correctly at all. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0f30a12ce7b3d4d86c9ca9072f587da77c8eef34 |
|
30-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Revert r153723, and its follow-ups r153728 and r153733. These patches cause us to miscompile and/or reject code with static function-local variables in an extern-C context. Previously, we were papering over this as long as the variables are within the same translation unit, and had not seen any failures in the wild. We still need a proper fix, which involves mangling static locals inside of an extern-C block (as GCC already does), but this patch causes pretty widespread regressions. Firefox, and many other applications no longer build. Lots of test cases have been posted to the list in response to this commit, so there should be no problem reproducing the issues. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
49d26d2817180ccde605c987f79cd3a5b57639cd |
|
30-Mar-2012 |
John McCall <rjmccall@apple.com> |
Do the static-locals thing properly in the face of unions and other things which might mess with the variable's type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
26945addf1660d2c54af7be57bc9adb7ccc50a24 |
|
30-Mar-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
ItaniumCXXABI.cpp: Don't use nullptr. Clang source tree should be pre-c++11-compatible. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153728 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
9993cc7b56b6bcb73914d707eb3afb29c2f85db8 |
|
30-Mar-2012 |
John McCall <rjmccall@apple.com> |
When emitting a static local variable in C++, handle the case that the variable already exists. Partly this is just protection against people making crazy declarations with custom asm labels or extern "C" names that intentionally collide with the manglings of such variables, but the main reason is that we can actually emit a static local variable twice with the requirement that it match up. There may be other cases with (e.g.) the various nested functions, but the main exemplar is with constructor variants, where we can be forced into double-emitting the function body under certain circumstances like (currently) the presence of virtual bases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
4e4d08403ca5cfd4d558fa2936215d3a4e5a528d |
|
11-Mar-2012 |
David Blaikie <dblaikie@gmail.com> |
Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
de5d3c717684f3821b8db58037bc7140acf134aa |
|
17-Feb-2012 |
John McCall <rjmccall@apple.com> |
Whether an argument is required (in contrast with being an optional argument passed through the variadic ellipsis) potentially affects how we need to lower it. Propagate this information down to the various getFunctionInfo(...) overloads on CodeGenTypes. Furthermore, rename those overloads to clarify their distinct purposes, and make sure we're calling the right one in the right place. This has a nice side-effect of making it easier to construct a function type, since the 'variadic' bit is no longer separable. This shouldn't really change anything for our existing platforms, with one minor exception --- we should now call variadic ObjC methods with the ... in the "right place" (see the test case), which I guess matters for anyone running GNUStep on MIPS. Mostly it's just a substantial clean-up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
4d4e5c1ae83f4510caa486b3ad19de13048f9f04 |
|
15-Feb-2012 |
John McCall <rjmccall@apple.com> |
Split reinterpret_casts of member pointers out from CK_BitCast; this is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed). Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150551 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e76872e81ea32fbc863d8d7ef6eadc91a8f8673b |
|
14-Feb-2012 |
Nick Lewycky <nicholas@mxc.ca> |
Mark the cxa_guard_{abort,acquire,release} functions nounwind. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
7ca4850a3e3530fa6c93b64b740446e32c97f992 |
|
13-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Deal with a horrible C++11 special case. If a non-literal type has a constexpr constructor, and that constructor is used to initialize an object of static storage duration such that all members and bases are initialized by constant expressions, constant initialization is performed. In this case, the object can still have a non-trivial destructor, and if it does, we must emit a dynamic initializer which performs no initialization and instead simply registers that destructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
cec5ebd4a6a89a7023d04cec728fd340b541ed61 |
|
11-Feb-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Basic support for referring to captured variables from lambdas. Some simple examples seem to work. Tests coming up soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
8b418685e9e4f02f4eb2a76e1ec063e07552b68d |
|
07-Feb-2012 |
Chris Lattner <sabre@nondot.org> |
simplify a bunch of code to use the well-known LLVM IR types computed by CodeGenModule. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f7ccbad5d9949e7ddd1cbef43d482553b811e026 |
|
05-Feb-2012 |
Dylan Noblesmith <nobled@dreamwidth.org> |
Basic: import SmallString<> into clang namespace (I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e7aa62de659049428976052eadf69188eae64170 |
|
17-Jan-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Remove constant member pointer support from Expr-based constant emission now that APValue-based constant emission knows how to emit member pointers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2d6a5670465cb3f1d811695a9f23e372508240d2 |
|
14-Jan-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
constexpr irgen: Add irgen support for APValue::Struct, APValue::Union, APValue::Array and APValue::MemberPointer. All APValue values can now be emitted as constants. Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other entrypoints dealing with constant member pointers are no longer necessary and will be removed in a later change. Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to VarDecl::evaluateValue. This performs caching and deals with the nasty cases in C++11 where a non-const object's initializer can refer indirectly to previously-initialized fields within the same object. Building the intermediate APValue object incurs a measurable performance hit on pathological testcases with huge initializer lists, so we continue to build IR directly from the Expr nodes for array and record types outside of C++11. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
578faa837b552403e2002b97fdfbfde14f2448e5 |
|
27-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
de-tmpify clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140637 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
1d2b31710539d705a3850c9fc3aa1804c2a5efee |
|
26-Sep-2011 |
Peter Collingbourne <peter@pcc.me.uk> |
Create a VTableContext class and start moving CodeGenVTables methods to it git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
eb43f4a8f133c2bc510ae136a556e92b68a6ff44 |
|
14-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Re-commit r139643. Make clang use Acquire loads and Release stores where necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
a179b531f4728b91291bfbf639ddf71ed7db810a |
|
14-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Revert r139643 while I look into it; it's breaking selfhost. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139648 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
93013b235680b184be3cda150bcd6456944415f4 |
|
13-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Make clang use Acquire loads and Release stores where necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
bcfd1f55bfbb3e5944cd5e03d07b343e280838c4 |
|
02-Sep-2011 |
Douglas Gregor <dgregor@apple.com> |
Extend the ASTContext constructor to delay the initialization of builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, rather than doing so after the fact. No actual functionality change (yet). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
da549e8995c447542d5631b8b67fcc3a9582797a |
|
29-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove some unnecessary single element array temporaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
91873b72bf01b7170f80154f3118300ff2eacd34 |
|
27-Jul-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Make CodeGen for array delete involving incomplete class work without crashing. Should fix regression on g++.dg/init/delete1.C. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136241 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
5f9e272e632e951b1efe824cd16acb4d96077930 |
|
23-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports them into the clang namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2acc6e3feda5e4f7d9009bdcf8b1cd777fecfe2d |
|
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
de-constify llvm::Type, patch by David Blaikie! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ad346f4f678ab1c3222425641d851dc63e9dfa1a |
|
12-Jul-2011 |
John McCall <rjmccall@apple.com> |
Generalize Cleanup::Emit's "isForEH" parameter into a set of flags. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f742eb0196e1b25c0b71e91da4a2b856d16a1dab |
|
10-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
Rename CGT::VerifyFuncTypeComplete to isFuncTypeConvertible since it is a predicate, not an action. Change the return type to be a bool, not the incomplete member. Enhace it to detect the recursive compilation case, allowing us to compile Eli's testcase on llvmdev: struct T { struct T (*p)(void); } t; into: %struct.T = type { {}* } @t = common global %struct.T zeroinitializer, align 8 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
9cbe4f0ba01ec304e1e3d071c071f7bca33631c0 |
|
09-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
clang side to match the LLVM IR type system rewrite patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
c5cbb909e8a27deb8f1a2b6b7bf56a96051af81a |
|
20-Jun-2011 |
Chris Lattner <sabre@nondot.org> |
Update to match mainline ConstantStruct::get API change. Also, use ConvertType on InitListExprs as they are being converted. This is needed for a forthcoming patch, and improves the IR generated anyway (see additional type names in testcases). This patch also converts a bunch of std::vector's in CGObjCMac to use C arrays. There are a ton more that should be converted as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133413 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
7650d95a1a616ea300f37126a8dfc93dc19a662a |
|
19-Jun-2011 |
Chris Lattner <sabre@nondot.org> |
update for api change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133365 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0502a224984a26087ea4d64e8e5d2dd4dca432f6 |
|
17-Jun-2011 |
John McCall <rjmccall@apple.com> |
Perform an acquire memory barrier on the fast path of a thread-safe static initializer check, as required by the Itanium ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f85e193739c953358c865005855253af4f68a497 |
|
16-Jun-2011 |
John McCall <rjmccall@apple.com> |
Automatic Reference Counting. Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
95d318c4c10437db40ca6e15fdf32e04012da58e |
|
28-May-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Eliminate temporary argument vectors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132260 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
28ff4d640493dab5323d035a69730f9951d65ca1 |
|
02-May-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Remove dead variable flagged by gcc's -Wunused-but-set-variable. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
173d51286bcaff4b6b76eebf6542d3b1311142e2 |
|
27-Apr-2011 |
Anders Carlsson <andersca@mac.com> |
When compiling with -fno-threadsafe-statics, guard variables for globals with internal linkage don't have to be i64, i8 works just fine! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
db27b5fb2d7fc50b8962b2c95e4d43b90c69b1f0 |
|
20-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
IRgen/ARM: Fix a think-o in conversion-to-null for member function pointers, we were computing the conversion as (ptr != 0 && non-virtual), when it should be (ptr != 0 || is-virtual). - Test to follow in LLVM test-suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
fc8f0e14ad142ed811e90fbd9a30e419e301c717 |
|
15-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
fix a bunch of comment typos found by codespell. Patch by Luis Felipe Strano Moraes! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
755d8497e39071aa24acc173ff07083e3256b8f8 |
|
12-Apr-2011 |
John McCall <rjmccall@apple.com> |
After some discussion with Doug, we decided that it made a lot more sense for __unknown_anytype resolution to destructively modify the AST. So that's what it does now, which significantly simplifies some of the implementation. Normal member calls work pretty cleanly now, and I added support for propagating unknown-ness through &. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129331 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
379b5155b4566f63679e1da6b0ceb5fdfa2aec6d |
|
11-Apr-2011 |
John McCall <rjmccall@apple.com> |
More __unknown_anytype work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129269 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
1246ba6f6801390ffc0e1d4b83a2b45e72283b8f |
|
09-Apr-2011 |
Ken Dyck <kd@kendyck.com> |
Convert the PointerWidthInBytes variable in EmitMemberPointer() to CharUnits to eliminate a divide-by-8. No change in functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
bbf3bacb3e0c1ebb3e8a4a8b1330404a7e379315 |
|
30-Mar-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to PHINode::Create() giving the (known or expected) number of operands. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
d26bc76c98006609002d9930f8840490e88ac5b5 |
|
09-Mar-2011 |
John McCall <rjmccall@apple.com> |
Use the "undergoes default argument promotion" bit on parameters to simplify the logic of initializing function parameters so that we don't need both a variable declaration and a type in FunctionArgList. This also means that we need to propagate the CGFunctionInfo down in a lot of places rather than recalculating it from the FAL. There's more we can do to eliminate redundancy here, and I've left FIXMEs behind to do it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f0be979bddb8baa28e77693a3dc931e487b2a9f2 |
|
11-Feb-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
For consistency, use llvm::raw_ostream in the rest of the mangle api. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
5808ce43f8d7e71f5acacc9ca320268c4f37565a |
|
03-Feb-2011 |
John McCall <rjmccall@apple.com> |
More capturing of 'this': implicit member expressions. Getting that right for anonymous struct/union members led to me discovering some seemingly broken code in that area of Sema, which I fixed, partly by changing the representation of member pointer constants so that IndirectFieldDecls aren't expanded. This led to assorted cleanups with member pointers in CodeGen, and while I was doing that I saw some random other things to clean up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124785 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0413db4a26b0a1577b75c2979b0eb21f3490d17a |
|
31-Jan-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Amazing that there are still issues with the fields of anonymous struct/unions.. Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://8818236. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
6ec278d1a354517e20f13a877481453ee7940c78 |
|
27-Jan-2011 |
John McCall <rjmccall@apple.com> |
Do a proper recursive lookup when deciding whether a class's usual deallocation function has a two-argument form. Store the result of this check in new[] and delete[] nodes. Fixes rdar://problem/8913519 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
dec0984fce504a39a7f085774fb67cfd9957be58 |
|
18-Jan-2011 |
Jeffrey Yasskin <jyasskin@google.com> |
Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and -Wint-to-pointer-cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123719 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
14110477887e3dc168ffc6c191e72d705051f99e |
|
13-Jan-2011 |
Peter Collingbourne <peter@pcc.me.uk> |
Move name mangling support from CodeGen to AST. In the 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
8a9dc4fcde8583b0c4389d5a43b88820adbd3022 |
|
24-Nov-2010 |
Anders Carlsson <andersca@mac.com> |
Simplify code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120118 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3030eb82593097502469a8b3fc26112c79c75605 |
|
06-Nov-2010 |
John McCall <rjmccall@apple.com> |
Simplify the logic for emitting guard variables for template static data members by delaying the emission of the initializer until after linkage and visibility have been set on the global. Also, don't emit a guard unless the variable actually ends up with vague linkage, and don't use thread-safe statics in any case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
112c967bd5c862a0f5d7913aa06700c048807db8 |
|
02-Nov-2010 |
John McCall <rjmccall@apple.com> |
Ensure that static local variables in function templates inherit the visibility of their function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
92d835a86ac334768d0b75936201e4fea3941c1f |
|
27-Oct-2010 |
Fariborz Jahanian <fjahanian@apple.com> |
Patch to provide guard when initializing instances of static data member of a class template. Fixes //rdar :// 8562966 and pr8409. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
5cd91b513455fd7753e8815b54f0a49bbca6602d |
|
08-Sep-2010 |
John McCall <rjmccall@apple.com> |
Implement ARM static local initialization guards, which are more compact than Itanium guards and use a slightly different compiled-in API. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113330 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
eede61a83e90f3cb03ef8665b67d648dccd6ce42 |
|
02-Sep-2010 |
Douglas Gregor <dgregor@apple.com> |
Revert my two IRgen fixes for "bool", then use a far simpler approach based on ConvertTypeForMem. Thanks to John for pointing out the right solution. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
b61e2a328c5c2552b0bb3a8d3c4bc9389f34a321 |
|
02-Sep-2010 |
Douglas Gregor <dgregor@apple.com> |
Fix a crash involving pointer-to-data-members of boolean type. We were constructing an LLVM PointerType directly from the "bool"'s LLVM type (i1), which resulted in unfortunate pointer type i1*. The fix is to build the LLVM PointerType from the corresponding Clang PointerType, so that we get i8* in the case of a bool. John, please review. I also left a FIXME there because we seem to be dropping "volatile", which would be rather unfortunate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
9cb2cee212d708220c52249ceac4cdd9f2b8aeb0 |
|
02-Sep-2010 |
John McCall <rjmccall@apple.com> |
Simplify some random accesses to the ASTContext from the ABI classes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
1e7fe751466ea82665fd21e9162fd7cc9c5f412d |
|
02-Sep-2010 |
John McCall <rjmccall@apple.com> |
Abstract IR generation of array cookies into the C++ ABI class and implement ARM array cookies. Also fix a few unfortunate bugs: - throwing dtors in deletes prevented the allocation from being deleted - adding the cookie to the new[] size was not being considered for overflow (and, more seriously, was screwing up the earlier checks) - deleting an array via a pointer to array of class type was not causing any destructors to be run and was passing the unadjusted pointer to the deallocator - lots of address-space problems, in case anyone wants to support free store in a variant address space :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
6c2ab1d578c6cc1f3ddcc948532cd625f1092ef2 |
|
31-Aug-2010 |
John McCall <rjmccall@apple.com> |
Amusingly, I missed this point of abstraction in all my earlier member-pointer refactoring: dereferencing a member data pointer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
4c40d98ab7acf5f27fa89b17bd8fc0ef7683df37 |
|
31-Aug-2010 |
John McCall <rjmccall@apple.com> |
Teach IR generation to return 'this' from constructors and destructors under the ARM ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
2de56d1d0c3a504ad1529de2677628bdfbb95cd4 |
|
25-Aug-2010 |
John McCall <rjmccall@apple.com> |
GCC didn't care for my attempt at API compatibility, so brute-force everything to the new constants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
de719f7131e1ece5c9d6b5ffe21b83286d29f10f |
|
23-Aug-2010 |
John McCall <rjmccall@apple.com> |
chandlerc pointed out that ending a line with /\ is not very friendly. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
0bab0cdab751248ca389a5592bcb70eac5d39260 |
|
23-Aug-2010 |
John McCall <rjmccall@apple.com> |
Abstract out everything having to do with member pointers into the ABI class; they should just be completely opaque throughout IR gen now, although I haven't really audited that. Fix a bug apparently inherited from gcc-4.2 where we failed to null-check member data pointers when performing derived-to-base or base-to-derived conversions on them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
f16aa103d3afd42fbca2ab346f191bf745cec092 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Go back to asking CodeGenTypes whether a type is zero-initializable. Make CGT defer to the ABI on all member pointer types. This requires giving CGT a handle to the ABI. It's way easier to make that work if we avoid lazily creating the ABI. Make it so. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e14add4a275318e7a9cafd3a01f79fb15a5a08bc |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Clean up a very silly use of first-class aggregates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
d608cdb7c044365cf4e8764ade1e11e99c176078 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Experiment with using first-class aggregates to represent member function 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
e9fd7eb6c67676dc27e84eac429aec4f3be51f26 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Extract member function pointer comparison and null comparison into the ABI code. Implement correct semantics for these on ARM. I believe this completes the implementation of member function pointers on ARM. I think I'm going to switch member function pointers over to be non-aggregates while I have all this in mind. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111774 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
875ab10245d3bf37252dd822aa1616bb0a391095 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Abstract out member-pointer creation. I'm really unhappy about the current duplication between the constant and non-constant paths in all of this. Implement ARM ABI semantics for member pointer constants and conversion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111772 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
cf2c85e76fdafe7e634810a292321a6c8322483d |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Abstract more member-pointerness out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111771 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3023def6bea3af6dbb51eea51f8cb8ea892d26cf |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Abstract out member-pointer conversions. Pretty much everything having to do with member pointers is ABI-specific. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
babc9a9ecc3fbc04edaac5a1f4fb3e869815b25c |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Implement the call parts of the member-function-pointer ARM C++ ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
93d557bc1867b7d7b102f87290194b4be7932c92 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
Extract calls to method pointers out as an ABI routine. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
ee79a4c30e5d1c5285551c9a25b8ec6d45d46aa7 |
|
22-Aug-2010 |
John McCall <rjmccall@apple.com> |
The ARM C++ ABI is sufficiently different from the Itanium C++ ABI that it deserves its own enumerator. Obviously the implementations should closely follow the Itanium ABI except in cases of divergence. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111749 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
071cc7deffad608165b1ddd5263e8bf181861520 |
|
16-Aug-2010 |
Charles Davis <cdavis@mines.edu> |
Implement support for member pointers under the Microsoft C++ ABI in the AST library. This also adds infrastructure for supporting multiple C++ ABIs in the AST. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111117 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|
3a811f1f4286ee3fd0c563c1cfe623956f3caa24 |
|
25-May-2010 |
Charles Davis <cdavis@mines.edu> |
IRgen: Add a stub class for generating ABI-specific C++ code. This class only supports name mangling (which is apparently used during C/ObjC codegen). For now only the Itanium C++ ABI is supported. Patches to add a second C++ ABI are forthcoming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/ItaniumCXXABI.cpp
|