John McCall
6bd2a89d5a
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.
llvm-svn: 173515
2013-01-25 22:31:03 +00:00
Chandler Carruth
3a02247dc9
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.
llvm-svn: 169237
2012-12-04 09:13:33 +00:00
Alexey Samsonov
9b502e512c
Initialize debug info for special cases of functions that lack declarations and are generated by Clang (global initializers/destructors, thunks) . Fixes PR13942.
...
llvm-svn: 166676
2012-10-25 10:18:50 +00:00
Douglas Gregor
47c089624f
Remove the HiddenWeakTemplateVTables CodeGen option. It's currently unused.
...
llvm-svn: 166561
2012-10-24 14:11:55 +00:00
David Blaikie
eb7d598cec
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).
llvm-svn: 166069
2012-10-16 22:56:05 +00:00
Rafael Espindola
86792438dc
Call CGM.SetLLVMFunctionAttributesForDefinition on thunks so that they get
...
attributes like uwtable. Without uwtable a stack unwinder would be unable
to go past the thunks.
llvm-svn: 164411
2012-09-21 20:39:32 +00:00
Benjamin Kramer
6ca4210d3a
Update clang for API change.
...
llvm-svn: 164218
2012-09-19 13:13:52 +00:00
Eli Friedman
00755e9554
Fix thunk emission for covariant virtual functions in cases which require
...
both a virtual and a non-virtual offset. PR13832.
llvm-svn: 163866
2012-09-14 01:45:09 +00:00
Eli Friedman
48a3291675
Fix line endings.
...
llvm-svn: 163865
2012-09-14 01:19:01 +00:00
John McCall
ff755cda9c
Don't crash *or* insert a bogus autorelease when emitting a
...
this-adjustment thunk in ARC++.
llvm-svn: 161014
2012-07-31 00:33:55 +00:00
Joao Matos
718a883c5f
Fixed whitespace issue introduced in r160373.
...
llvm-svn: 160388
2012-07-17 19:17:58 +00:00
Joao Matos
2ce88ef9a7
[Windows] Abstract pure virtual method calls in the ABI. Fix the Windows ABI to forward to the correct function.
...
llvm-svn: 160373
2012-07-17 17:10:11 +00:00
John McCall
8dda7b27ee
Distinguish more carefully between free functions and C++ instance methods
...
in the ABI arrangement, and leave a hook behind so that we can easily
tweak CCs on platforms that use different CCs by default for C++
instance methods.
llvm-svn: 159894
2012-07-07 06:41:13 +00:00
Benjamin Kramer
e6b4a16ddd
Fix a use-after-free in thunk emission. EmitThunk may call RAUW on Init, invalidating the pointer.
...
Fixes PR12284. The test case only triggered under asan/valgrind, but it's better than nothing.
llvm-svn: 153120
2012-03-20 20:18:13 +00:00
David Blaikie
bbafb8a745
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
llvm-svn: 152536
2012-03-11 07:00:24 +00:00
John McCall
a729c62b81
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.
llvm-svn: 150788
2012-02-17 03:33:10 +00:00
Eli Friedman
9fbeba0d8e
Basic support for referring to captured variables from lambdas. Some simple examples seem to work. Tests coming up soon.
...
llvm-svn: 150293
2012-02-11 02:57:39 +00:00
Chris Lattner
ece0409a1a
simplify a bunch of code to use the well-known LLVM IR types computed by CodeGenModule.
...
llvm-svn: 149943
2012-02-07 00:39:47 +00:00
Dylan Noblesmith
2c1dd2716a
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.)
llvm-svn: 149799
2012-02-05 02:13:05 +00:00
Dylan Noblesmith
e27789991d
Basic: import OwningPtr<> into clang namespace
...
llvm-svn: 149798
2012-02-05 02:12:40 +00:00
Peter Collingbourne
cfd2356180
Move VTable builder to AST
...
llvm-svn: 140510
2011-09-26 01:57:12 +00:00
Peter Collingbourne
1c593c6a38
Have CodeGenVTables::GenerateConstructionVTable use VTableLayout
...
llvm-svn: 140509
2011-09-26 01:57:04 +00:00
Peter Collingbourne
085095f1ac
Move vtable dumper call to VTableBuilder ctor
...
llvm-svn: 140508
2011-09-26 01:57:00 +00:00
Peter Collingbourne
3b118abd93
Implement VTableContext::createConstructionVTableLayout
...
llvm-svn: 140507
2011-09-26 01:56:55 +00:00
Peter Collingbourne
affe111ba5
Move all vtable layout data into new VTableLayout class
...
llvm-svn: 140506
2011-09-26 01:56:50 +00:00
Peter Collingbourne
cd3c3f4f3d
Move VTableComponent to header file
...
llvm-svn: 140505
2011-09-26 01:56:45 +00:00
Peter Collingbourne
5ee9ee490e
Move vtable component accessors to VTableContext
...
llvm-svn: 140504
2011-09-26 01:56:41 +00:00
Peter Collingbourne
71c26936a0
Remove CodeGenVTables::ComputeVTableRelatedInformation dependency on CodeGen
...
llvm-svn: 140503
2011-09-26 01:56:36 +00:00
Peter Collingbourne
a834166e48
Create a VTableContext class and start moving CodeGenVTables methods to it
...
llvm-svn: 140502
2011-09-26 01:56:30 +00:00
David Blaikie
aa347f9392
Removing a bunch of dead returns/breaks after llvm_unreachables.
...
llvm-svn: 140407
2011-09-23 20:26:49 +00:00
David Blaikie
83d382b1ca
Switch assert(0/false) llvm_unreachable.
...
llvm-svn: 140367
2011-09-23 05:06:16 +00:00
Douglas Gregor
e8bbc12152
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).
llvm-svn: 138985
2011-09-02 00:18:52 +00:00
Eli Friedman
f5dfb31df0
Revert bad change. (It may look equivalent, but it isn't.)
...
llvm-svn: 137132
2011-08-09 18:16:09 +00:00
Eli Friedman
f481ccafd8
Cleanup; no functionality change.
...
llvm-svn: 137126
2011-08-09 17:38:12 +00:00
Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Chris Lattner
2192fe50da
de-constify llvm::Type, patch by David Blaikie!
...
llvm-svn: 135370
2011-07-18 04:24:23 +00:00
Chris Lattner
8806e32f16
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
llvm-svn: 134853
2011-07-10 00:18:59 +00:00
Jay Foad
83be361b8a
Replace the existing forms of ConstantArray::get() with a single form
...
that takes an ArrayRef.
llvm-svn: 133615
2011-06-22 09:24:39 +00:00
Anders Carlsson
d6f1518cc9
Fix another regression from the "skip vtable pointer initialization"
...
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.
llvm-svn: 131400
2011-05-16 04:08:36 +00:00
Eli Friedman
49a94b1c7c
Add an implementation of thunks for varargs methods. The implementation is a bit messy, but it is correct as long as the method in question doesn't use indirect gotos. A couple of possible alternative implementations are outlined in FIXME's in this patch. rdar://problem/8077308 .
...
llvm-svn: 130993
2011-05-06 17:27:27 +00:00
Eli Friedman
43dca6a8d2
Simplify code a bit by using CallArgList::add. No intended functionality change.
...
llvm-svn: 130699
2011-05-02 17:57:46 +00:00
Anders Carlsson
e5ec21c977
Change CollectPrimaryBases to collect the bases in the right order. Fixes one half of PR9660.
...
llvm-svn: 129252
2011-04-10 18:00:32 +00:00
Anders Carlsson
68aad14dd3
Make -fdump-vtable-layouts also dump vtable indices for all virtual member functions in the class.
...
llvm-svn: 129250
2011-04-10 17:42:45 +00:00
Ken Dyck
bb4e977218
[Reapply r128776, modified so that it does not break debug info.]
...
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
CharUnits. No change in functionality intended.
llvm-svn: 129072
2011-04-07 12:37:09 +00:00
Ken Dyck
3a09bc5ab0
[Reapply r128773. This is not the source of the issues Devang was seeing
...
with debug info.]
Use CharUnits for the offsets in the VirtualBaseClassOffsetOffsetsMapTy. No
change in functionality intended.
llvm-svn: 129048
2011-04-07 01:22:42 +00:00
Ken Dyck
25c82240e9
[Reapply r128771. It wasn't the source of the issues Devang saw with debug
...
info.]
Use CharUnits for the offset type in the ClassNamesAndOffsets map in
dumpLayout(). No change in functionality intended.
llvm-svn: 129046
2011-04-07 00:59:42 +00:00
Ken Dyck
42a9d29c2c
Reapply r128770. It's not the cause of the issues Devang saw with debug info.
...
Use CharUnits for the offsets in the VBaseOffsetOffsetsMapTy types. No
change in functionality intended.
llvm-svn: 129043
2011-04-07 00:55:01 +00:00
Devang Patel
84852bbb42
Revert r128770, r128771, r128773 and r128776 for now. It breaks debug info.
...
llvm-svn: 128842
2011-04-04 20:36:06 +00:00
Ken Dyck
1473c9a7c4
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
...
CharUnits. No change in functionality intended.
llvm-svn: 128776
2011-04-02 17:52:22 +00:00
Ken Dyck
1b23db93df
Use CharUnits for the offsets in the VirtualBaseClassOffsetOffsetsMapTy. No
...
change in functionality intended.
llvm-svn: 128773
2011-04-02 17:13:02 +00:00