Anders Carlsson
47680d8040
Rename NextOffset to DataSize.
...
llvm-svn: 82832
2009-09-26 01:34:51 +00:00
Anders Carlsson
7f78d85be4
Start at NextOffset when laying out bases as well.
...
llvm-svn: 82831
2009-09-26 01:29:10 +00:00
Anders Carlsson
a6d95b5a3e
Use NextOffset when laying out a field.
...
llvm-svn: 82828
2009-09-26 01:09:35 +00:00
Anders Carlsson
d7d358a65e
Even more work on empty classes.
...
llvm-svn: 82770
2009-09-25 15:39:00 +00:00
Benjamin Kramer
07fec3bbf5
Fix MSVC build by renaming a variable. PR5043
...
llvm-svn: 82762
2009-09-25 11:47:22 +00:00
Douglas Gregor
56751b5981
Fix checking for a null pointer constant when the expression itself is
...
value-dependent. Audit (and fixed) all calls to
Expr::isNullPointerConstant() to provide the correct behavior with
value-dependent expressions. Fixes PR5041 and a crash in libstdc++
<locale>.
In the same vein, properly compute value- and type-dependence for
ChooseExpr. Fixes PR4996.
llvm-svn: 82748
2009-09-25 04:25:58 +00:00
Anders Carlsson
e1883100a3
Who would have thought that empty classes were so tricky? Handle cases where an empty virtual base class needs to be moved aside because it conflicts with the first field.
...
llvm-svn: 82746
2009-09-25 01:54:38 +00:00
Anders Carlsson
4bf82141e7
Handle array fields that contain empty structs.
...
llvm-svn: 82744
2009-09-25 01:23:32 +00:00
Anders Carlsson
6f95c705ea
More work on empty classes.
...
llvm-svn: 82736
2009-09-25 00:02:51 +00:00
John McCall
90d1c2df56
Make it really, really easy to change the alignment of Type (and ExtQuals).
...
llvm-svn: 82730
2009-09-24 23:30:46 +00:00
Douglas Gregor
3a923c2d37
WIP implementation of explicit function template specialization. This
...
first implementation recognizes when a function declaration is an
explicit function template specialization (based on the presence of a
template<> header), performs template argument deduction + ambiguity
resolution to determine which template is being specialized, and hooks
There are many caveats here:
- We completely and totally drop any explicitly-specified template
arguments on the floor
- We don't diagnose any of the extra semantic things that we should
diagnose.
- I haven't looked to see that we're getting the right linkage for
explicit specializations
On a happy note, this silences a bunch of errors that show up in
libstdc++'s <iostream>, although Clang still can't get through the
entire header.
llvm-svn: 82728
2009-09-24 23:14:47 +00:00
John McCall
8ccfcb51ee
Refactor the representation of qualifiers to bring ExtQualType out of the
...
Type hierarchy. Demote 'volatile' to extended-qualifier status. Audit our
use of qualifiers and fix a few places that weren't dealing with qualifiers
quite right; many more remain.
llvm-svn: 82705
2009-09-24 19:53:00 +00:00
Anders Carlsson
bb66bc8e84
More improvements with laying out empty bases.
...
llvm-svn: 82682
2009-09-24 05:21:31 +00:00
Anders Carlsson
f24b18fb06
More work on empty classes.
...
llvm-svn: 82679
2009-09-24 03:22:10 +00:00
Anders Carlsson
6522b05db7
Scaffolding for supporting empty bases/fields.
...
llvm-svn: 82678
2009-09-24 03:13:30 +00:00
Chris Lattner
d545ad1301
implement support for __builtin_eh_return_data_regno on x86-32 and x86-64.
...
This implements PR5034 and rdar://6836445.
llvm-svn: 82614
2009-09-23 06:06:36 +00:00
Anders Carlsson
55640546e4
If we already set a primary base, don't set it to the first nearly empty base class.
...
llvm-svn: 82563
2009-09-22 19:16:59 +00:00
Anders Carlsson
3dc237390f
Fix speling error.
...
llvm-svn: 82562
2009-09-22 19:15:56 +00:00
Anders Carlsson
96cff1fc10
Explicitly initialize the PrimaryBase and PrimaryBaseWasVirtual members.
...
llvm-svn: 82560
2009-09-22 18:21:58 +00:00
Mike Stump
865715442e
Yes.
...
llvm-svn: 82559
2009-09-22 17:38:02 +00:00
Daniel Dunbar
95d5a1d240
Add safe part of previous (reverted) commit, necessary to update to LLVM API change.
...
llvm-svn: 82540
2009-09-22 10:06:21 +00:00
Daniel Dunbar
b879c3c125
Revert "Switch a few clients over to StringLiteral::getString.", this is breaking some projects, but I don't have a test case yet.
...
llvm-svn: 82539
2009-09-22 10:03:52 +00:00
Daniel Dunbar
5de27daf93
Switch a few clients over to StringLiteral::getString.
...
- Switching all of them out-of-my-current-scope-of-interest, sorry.
llvm-svn: 82515
2009-09-22 03:27:52 +00:00
Daniel Dunbar
362178883c
Add StringLiteral::getString -> StringRef.
...
llvm-svn: 82514
2009-09-22 03:27:33 +00:00
Anders Carlsson
8143069417
Store the set of indirect primary bases directly in the record layout builder.
...
llvm-svn: 82513
2009-09-22 03:02:06 +00:00
Mike Stump
8ce0ea1360
Fix doc.
...
llvm-svn: 82511
2009-09-22 02:43:44 +00:00
Anders Carlsson
d6020c321a
Record layout builder cleanup.
...
llvm-svn: 82502
2009-09-22 00:04:45 +00:00
John McCall
9dd450bb78
Change all the Type::getAsFoo() methods to specializations of Type::getAs().
...
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.
The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.
llvm-svn: 82501
2009-09-21 23:43:11 +00:00
Daniel Dunbar
ebc5140e22
Disable questionable code for handling isNullPointerConstant on value dependent
...
expression.
llvm-svn: 82217
2009-09-18 08:46:16 +00:00
Daniel Dunbar
687fa86a30
Fix two crashes on value dependent expressions (shift and null-pointer check).
...
- Doug, please check.
- PR4940.
llvm-svn: 82129
2009-09-17 06:31:27 +00:00
Daniel Dunbar
4782a6ead5
Remove trailing whitespace.
...
llvm-svn: 82128
2009-09-17 06:31:17 +00:00
Anders Carlsson
93b6d5e85e
Temporary band-aid for handling empty classes somewhat better.
...
llvm-svn: 82124
2009-09-17 04:42:56 +00:00
Anders Carlsson
e7e163cc0b
When creating function types, remove any top-level CVR qualifications in the function type argument types.
...
llvm-svn: 82093
2009-09-16 23:47:08 +00:00
John McCall
11083da4d0
Improved representation and support for friend class templates. Angst about same.
...
llvm-svn: 82088
2009-09-16 22:47:08 +00:00
Fariborz Jahanian
cceedbff27
Do not generate write-barrier in indirect assignment to
...
a weak object.
llvm-svn: 82061
2009-09-16 18:09:18 +00:00
Fariborz Jahanian
a9c4041471
In building list of visible conversion functions, use
...
result type of template convesion functions.
llvm-svn: 81943
2009-09-15 23:02:16 +00:00
Fariborz Jahanian
adcea10410
1) don't do overload resolution in selecting conversion
...
to pointer function for delete expression. 2)
Treat type conversion function and its 'const' version
as identical in building the visible conversion list.
llvm-svn: 81930
2009-09-15 22:15:23 +00:00
Douglas Gregor
f70b2b4f38
Make sure we're comparing the canonical types when we determine
...
whether a constructor is a copy constructor.
Sadly, I wasn't able to get down to a test case smaller than libstdc++'s
<string>.
llvm-svn: 81913
2009-09-15 20:50:23 +00:00
Douglas Gregor
be999390eb
Implement partial ordering of class template partial specializations
...
(C++ [temp.class.order]).
llvm-svn: 81866
2009-09-15 16:23:51 +00:00
Anders Carlsson
7cd39e0721
Handle reinterpret_cast between integral types and pointer types.
...
llvm-svn: 81837
2009-09-15 04:48:33 +00:00
Anders Carlsson
04c3bf4fab
Codegen support for nullptr from C++0x.
...
llvm-svn: 81835
2009-09-15 04:39:46 +00:00
Fariborz Jahanian
cb1c19147f
Using the property dot-syntax to invoke a non-eixsting
...
structure-valued setter should cause a user error instead of
crash.
llvm-svn: 81769
2009-09-14 16:40:48 +00:00
Eli Friedman
7d45c4884a
Add utility to evaluate lvalues which are an offset relative to a stack
...
location. Patch by Enea Zaffanella.
llvm-svn: 81672
2009-09-13 10:17:44 +00:00
Douglas Gregor
299d76e901
Rework the way we determine whether an externally visible symbol is
...
generated for an inline function definition, taking into account C99
and GNU inline/extern inline semantics. This solution is simpler,
cleaner, and fixes PR4536.
llvm-svn: 81670
2009-09-13 07:46:26 +00:00
Fariborz Jahanian
a954049875
More improvement in building list of visible conversion
...
functions for a class when needed.
llvm-svn: 81624
2009-09-12 19:52:10 +00:00
Fariborz Jahanian
edca0bcf48
Removed Context argument from couple of methods which don't
...
need them.
llvm-svn: 81621
2009-09-12 19:02:34 +00:00
Fariborz Jahanian
b394f50ac9
More work toward having an access method for visible
...
conversion functions.
llvm-svn: 81618
2009-09-12 18:26:03 +00:00
Douglas Gregor
15fc956ca0
Remove unnecessary ASTContext parameter from FunctionDecl::isBuiltinID
...
llvm-svn: 81590
2009-09-12 00:22:50 +00:00
Douglas Gregor
16618f2157
Remove unnecessary ASTContext parameters from isMain and isExternC
...
llvm-svn: 81589
2009-09-12 00:17:51 +00:00
Douglas Gregor
e2350a3b97
Eliminate FunctionDecl::getBodyIfAvailable
...
llvm-svn: 81588
2009-09-12 00:08:48 +00:00