Ted Kremenek
a4f7c180ae
Add simple static analyzer checker to check for sending 'release', 'retain', etc. directly to a class. Fixes <rdar://problem/7252064>.
...
llvm-svn: 89449
2009-11-20 05:27:05 +00:00
Ted Kremenek
c1f161c012
Unused ivar checker: ivars referenced by lexically nested functions should not be flagged as unused. Fixes <rdar://problem/7254495>.
...
llvm-svn: 89448
2009-11-20 04:31:57 +00:00
Ted Kremenek
a96d02c76b
Really fix test case.
...
llvm-svn: 89430
2009-11-20 01:20:12 +00:00
Ted Kremenek
4b412f51df
Fix test case.
...
llvm-svn: 89429
2009-11-20 01:19:22 +00:00
Douglas Gregor
ee9067c51f
When we have a non-dependent expression such as
...
A::f
that occurs within a non-static member function with a type-dependent
"this", don't consider this to be a case for introduction of an
implicit "(*this)." to refer to a specific member function unless we
know (at template definition time) that A is a base class of *this.
There is some disagreement here between GCC, EDG, and Clang about the
handling of this case. I believe that Clang now has the correct,
literal interpretation of the standard, but have asked for
clarification (c++std-core-15483).
llvm-svn: 89425
2009-11-20 00:59:20 +00:00
Ted Kremenek
dd2b2b23c8
Fix null dereference in NSAutoreleasePoolChecker when analyzing messages sent to blocks.
...
llvm-svn: 89413
2009-11-20 00:12:36 +00:00
Mike Stump
a7a1b7e780
Fixup key function calculations.
...
llvm-svn: 89412
2009-11-20 00:02:19 +00:00
Douglas Gregor
deebf6efab
Deduce a ConstantArrayType from a value-dependent initializer list
...
rather than punting to a DependentSizedArrayType, tightening up our
type checking for template definitions. Thanks, John!
llvm-svn: 89407
2009-11-19 23:25:22 +00:00
Fariborz Jahanian
e774fa6412
Don't issue spurious diagnostic with Obj-C fast enumeration.
...
(radar 7409165).
llvm-svn: 89400
2009-11-19 22:12:37 +00:00
Ted Kremenek
439a6d146c
Fix crash when using --analyzer-store=region when handling initializers with nested arrays/structs whose values are not explicitly specified. Fixes <rdar://problem/7403269>.
...
llvm-svn: 89384
2009-11-19 20:20:24 +00:00
Fariborz Jahanian
1eab66c7cc
Patch to implement new-operators with default args.
...
Fixes pr5547.
llvm-svn: 89370
2009-11-19 18:39:40 +00:00
Douglas Gregor
ad2956c25d
Cope with an amusingly little anomaly with dependent types and
...
incomplete array initialization, where we have the following in a
template:
int a[] = { 1, 2, something-value-dependent };
// ...
sizeof(a);
The type of "a" appears to be a non-dependent IncompleteArrayType, but
treating it as such makes the sizeof(a) fail at template definition
time. We now correctly handle this by morphing the IncompleteArrayType
into a DependentSizedArrayType with a NULL expression, indicating that
its size has no corresponding expression (and, therefore, the type is
distinct from others).
llvm-svn: 89366
2009-11-19 18:03:26 +00:00
Ken Dyck
0138b9e1db
Define __WCHAR_WIDTH__ for use in stdint.h.
...
llvm-svn: 89353
2009-11-19 15:47:58 +00:00
Ken Dyck
f0b343f5b7
Parameterize WINT_MIN and WINT_MAX with __WINT_WIDTH__ to support arbitrary
...
widths. This corrects the values of these definitions for MSP430 and PIC16.
llvm-svn: 89350
2009-11-19 14:35:19 +00:00
Ken Dyck
a1f677c3d1
Add __WINT_WIDTH__ to paramaterize the limits of WINT_MIN and WINT_MAX in
...
stdint.h.
llvm-svn: 89348
2009-11-19 14:16:57 +00:00
Ken Dyck
575128656e
Add __SIZE_WIDTH__ to eventually replace __SIZE_TYPE__ in stdint.h.
...
llvm-svn: 89346
2009-11-19 13:42:09 +00:00
Ken Dyck
9b25f781c5
Restore __INTMAX_TYPE__, __UINTMAX_TYPE__, __PTRDIFF_TYPE__, and
...
__INTPTR_TYPE__ as the last is used in the test/CodeGen/const-init.c and all
could potentially be in use in the wild. My apologies.
llvm-svn: 89345
2009-11-19 13:18:59 +00:00
Ken Dyck
f982fc0b23
Remove __PTRDIFF_TYPE__ as it is no longer needed by stdint.h. It has been
...
replaced with __PTRDIFF_WIDTH__.
llvm-svn: 89344
2009-11-19 12:37:14 +00:00
Ken Dyck
056efe0fc7
Add __PTRDIFF_WIDTH__ macro to eventually replace __PTRDIFF_TYPE__ in stdint.h.
...
llvm-svn: 89342
2009-11-19 12:21:52 +00:00
Ken Dyck
cc11129fda
Remove __INTPTR_TYPE__ as it is no longer needed by stdint.h, which uses
...
__INTPTR_WIDTH__ instead.
llvm-svn: 89340
2009-11-19 12:15:31 +00:00
Douglas Gregor
156d50c529
Add missing testcase for Objective-C p@property getter/setter completions
...
llvm-svn: 89335
2009-11-19 07:58:03 +00:00
Daniel Dunbar
484afa2d3b
Switch -f{builtin,math-errno,rtti} and -analyzer-purge-dead to -...no... variants instead of using llvm: 🆑 :init(true) arguments.
...
llvm-svn: 89315
2009-11-19 04:55:23 +00:00
Eli Friedman
06577388d7
The sub-statement of a case statement is not an unevaluated context!
...
llvm-svn: 89303
2009-11-19 03:14:00 +00:00
Douglas Gregor
1b605f7537
Improve code completion for Objective-C message sends, so that we
...
provide completion results before each keyword argument, e.g.,
[foo Method:arg WithArg1:arg1 WithArg2:arg2]
We now complete before "WithArg1" and before "WithArg2", in addition
to completing before "Method".
llvm-svn: 89290
2009-11-19 01:08:35 +00:00
Douglas Gregor
e6078dab99
Improve the accuracy of code completion for the attributes of an @property declaration, so that we don't produce completions for attributes that would conflict with already-specified attributes
...
llvm-svn: 89281
2009-11-19 00:14:45 +00:00
Douglas Gregor
45f83ee87d
Improve code-completion results for the flags in an @property
...
declaration by providing patterns for "getter = <method>" and "setter
= <method>". As part of this, invented a new "pattern" result kind
that is merely a semantic string. The "pattern" result kind should
help with other kinds of code templates.
llvm-svn: 89277
2009-11-19 00:01:57 +00:00
Fariborz Jahanian
1e3609f6c4
Do not enter forward class 'Protocol' in decl context.
...
Will do it later. Fixes pr5552.
llvm-svn: 89269
2009-11-18 23:15:37 +00:00
Sebastian Redl
6a96bf7d6e
Do overload resolution for compound assignment even if only the RHS is overloadable. Compound assignment may be overloaded as a non-member, and anyway the overload resolution is necessary because it triggers implicit (used-defined) conversions. Fixes PR5512, but not really the deeper issues lurking. Those are standard defects.
...
llvm-svn: 89268
2009-11-18 23:10:33 +00:00
John McCall
1f6339e1fb
Resolve this FIXME: unelaborated lookups are ambiguous, too.
...
llvm-svn: 89266
2009-11-18 23:05:13 +00:00
Douglas Gregor
52e78bd992
Code completion after @dynamic
...
llvm-svn: 89265
2009-11-18 22:56:13 +00:00
John McCall
1f82f2462d
Overhaul previous-declaration and overload checking to work on lookup results
...
rather than NamedDecl*. This is a major step towards eliminating
OverloadedFunctionDecl.
llvm-svn: 89263
2009-11-18 22:49:29 +00:00
Douglas Gregor
11f3050141
Test case for parsing-recovery change to @synthesized
...
llvm-svn: 89260
2009-11-18 22:37:38 +00:00
Douglas Gregor
5d6498827b
Code completion for Objective-C @synthesized.
...
llvm-svn: 89259
2009-11-18 22:32:06 +00:00
Fariborz Jahanian
fff3fb2b35
ignore parens surounding the type when diagnosing
...
pointer-to-member cast types used in expressions.
llvm-svn: 89255
2009-11-18 22:16:17 +00:00
Fariborz Jahanian
1bc0f9affc
This patch fixes a bug in misdiagnosing correct
...
use of pointer to data member.
llvm-svn: 89251
2009-11-18 21:54:48 +00:00
Sebastian Redl
d5b2453722
Track overriding methods when instantiating a template class. Fixes PR5550.
...
llvm-svn: 89248
2009-11-18 21:51:29 +00:00
Sebastian Redl
931e0bd331
Pretend destructors are const and volatile. This allows calling them with const and/or volatile objects. Fixes PR5548.
...
llvm-svn: 89244
2009-11-18 20:55:52 +00:00
Sebastian Redl
4990a6347a
Don't generate superfluous and ambiguous built-in candidates for multi-level array subscript and arithmetic. Fixes PR5546.
...
llvm-svn: 89242
2009-11-18 20:39:26 +00:00
Ken Dyck
2d4371d666
Define intptr_t and uintptr_t in terms of their equivalent exact-width types.
...
llvm-svn: 89237
2009-11-18 20:24:13 +00:00
Daniel Dunbar
9b33352856
Update test to stop scanning things in the predefines buffer, this isn't adding
...
value.
llvm-svn: 89235
2009-11-18 20:19:44 +00:00
Ken Dyck
24cfcf15c3
Predefine __INTPTR_WIDTH__ for future use in stdint.h.
...
llvm-svn: 89231
2009-11-18 20:05:48 +00:00
Ken Dyck
fa01168a5c
Remove the __INTMAX_TYPE__ and __UINTMAX_TYPE__ built-in macros as they are no
...
longer used by stdint.h.
llvm-svn: 89230
2009-11-18 19:51:06 +00:00
Ken Dyck
ac11b7b625
Define INTMAX_C and UINTMAX_C in terms of the corresponding exact-width
...
INTn_C and UINTn_C macros.
llvm-svn: 89226
2009-11-18 19:42:57 +00:00
Ken Dyck
63c8ef8256
Define INTMAX_MIN, INTMAX_MAX, and UINTMAX_MAX in terms of the limit macros for
...
their corresponding exact-width type.
llvm-svn: 89224
2009-11-18 19:22:15 +00:00
Douglas Gregor
5d34fd3674
Implement code completion for Objective-C category names in @interface
...
and @implementation declarations.
llvm-svn: 89223
2009-11-18 19:08:43 +00:00
Ken Dyck
47181584f1
Define intmax_t and uintmax_t as the [u]intN_t type corresponding to
...
__INTMAX_WIDTH__.
llvm-svn: 89221
2009-11-18 18:57:04 +00:00
Fariborz Jahanian
41e803d8c7
Don't warn if objc method param types in declaration and
...
implementation mismatch in their qualifiers only.
This will match similar behavior in c/c++ and
fixes radar 7211653.
llvm-svn: 89220
2009-11-18 18:56:09 +00:00
Fariborz Jahanian
76197416ac
Improve on diagnosing type mismatches because of
...
lack of viable convesion functions.
llvm-svn: 89216
2009-11-18 18:26:29 +00:00
Sebastian Redl
55db1ec3ec
CastsAwayConstness shouldn't care if member pointers point into different classes. Fixes PR5545.
...
llvm-svn: 89215
2009-11-18 18:10:53 +00:00
Douglas Gregor
49c22a74eb
Code completion for Objective-C class names after @interface,
...
@implementation, and in the declaration of the superclass of an
@interface.
llvm-svn: 89207
2009-11-18 16:26:39 +00:00
Benjamin Kramer
fb4ff27367
Update index tests for r89203.
...
llvm-svn: 89204
2009-11-18 14:20:01 +00:00
Ken Dyck
c0c98291e0
Predefine __INTMAX_WIDTH__ for the future parameterization of INTMAX macros in
...
stdint.h.
llvm-svn: 89203
2009-11-18 13:52:57 +00:00
Douglas Gregor
5b4671c328
Code completion after @property, providing the names of forward-declared properties
...
llvm-svn: 89196
2009-11-18 04:49:41 +00:00
Douglas Gregor
23f21f7ba3
Rename code-completion test to actually make sense
...
llvm-svn: 89195
2009-11-18 04:41:01 +00:00
Douglas Gregor
baf6961ed4
Code completion for Objective-C properly lists
...
llvm-svn: 89194
2009-11-18 04:19:12 +00:00
Mike Stump
c5d2ed73ff
Be sure to set visibility for ZTI symbols for classes from the class.
...
llvm-svn: 89186
2009-11-18 03:21:29 +00:00
Mike Stump
f77aaa0089
Make _ZTI symbols hidden. This speeds up the dynamic linker.
...
llvm-svn: 89185
2009-11-18 02:53:28 +00:00
John McCall
e61f2ba7e4
Incremental progress on using declarations. Split UnresolvedUsingDecl into
...
two classes, one for typenames and one for values; this seems to have some
support from Doug if not necessarily from the extremely-vague-on-this-point
standard. Track the location of the 'typename' keyword in a using-typename
decl. Make a new lookup result for unresolved values and deal with it in
most places.
llvm-svn: 89184
2009-11-18 02:36:19 +00:00
Ted Kremenek
0469b7ea00
Add special clang_getCursor() support for @class . Handles <rdar://problem/7383421>.
...
llvm-svn: 89183
2009-11-18 02:02:52 +00:00
Douglas Gregor
9291bade4f
Code completion for member accesses that involve Objective-C properties and instance variables
...
llvm-svn: 89182
2009-11-18 01:29:26 +00:00
Eli Friedman
132e70bfa4
PR5520: Make sure to check whether the base type is complete before looking for
...
operator->.
llvm-svn: 89180
2009-11-18 01:28:03 +00:00
Mike Stump
5bbbb13765
Fix one last gotcha with typeid.
...
llvm-svn: 89172
2009-11-18 00:40:12 +00:00
Douglas Gregor
a3329fa05e
Finish code completion for Objective-C message sends
...
llvm-svn: 89168
2009-11-18 00:06:18 +00:00
Mike Stump
103a084cbe
Add rtti support for arrays, functiond without prototypes, vectors and
...
enums.
llvm-svn: 89165
2009-11-17 23:45:57 +00:00
Douglas Gregor
bab2b3c70f
Refactor code-completion support for message sends, collecting the
...
code to find and add Objective-C methods (starting at an
ObjCContainerDecl) into a single, static function. Also, make sure
that we search into the implementations of classes and categories to
find even more methods.
llvm-svn: 89163
2009-11-17 23:22:23 +00:00
Mike Stump
96b96d5f2e
Add rtti info for function prototypes and refactor. This allows
...
pointer to member functions to work. WIP.
llvm-svn: 89161
2009-11-17 23:11:22 +00:00
Fariborz Jahanian
95ace55701
This patch finalizes implementatin of weak_import
...
objective-c2 classes (radar 6815425).
llvm-svn: 89157
2009-11-17 22:42:00 +00:00
Mike Stump
6fdfea67ad
Add rtti support for pointer to data members.
...
llvm-svn: 89155
2009-11-17 22:33:00 +00:00
Daniel Dunbar
f6e32e4abe
Drop unnecessary #include.
...
llvm-svn: 89154
2009-11-17 22:25:16 +00:00
Daniel Dunbar
ba0c9e8685
Remove unnecessary &&s.
...
llvm-svn: 89153
2009-11-17 22:25:07 +00:00
Mike Stump
db72c89eb1
Add rtti support for non-member pointers. WIP.
...
llvm-svn: 89148
2009-11-17 21:44:24 +00:00
Ted Kremenek
2df52dca49
Add c-index-test mode "-test-file-scan", which scans a source file and calls clang_getCursor() on every character.
...
llvm-svn: 89136
2009-11-17 19:37:36 +00:00
Ted Kremenek
1e8a6f8527
Fix test case.
...
llvm-svn: 89135
2009-11-17 19:36:36 +00:00
David Chisnall
950a9518b1
Added block type introspection support.
...
As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.
llvm-svn: 89134
2009-11-17 19:33:30 +00:00
Ted Kremenek
92978f8122
Rename test.
...
llvm-svn: 89132
2009-11-17 19:29:41 +00:00
Jakob Stoklund Olesen
061644a69d
Undo previous test fix. -split-phi-edges now disables automatically when the
...
local register allocator is used.
llvm-svn: 89127
2009-11-17 19:18:32 +00:00
Ken Dyck
19ac306c2c
Replace (-INT8_C(128)), which uses an illegally out-of-range argument for
...
INT8_C, with (-INT8_C(127)-1) in the definition of INT8_MIN. Apply similar
changes to the definitions of INT16_MIN and INT24_MIN.
llvm-svn: 89120
2009-11-17 18:29:12 +00:00
Ted Kremenek
ef3339b7d4
Clean up c-index-test command line usage a bit by requiring a "-test-load-tu" option when testing clang_loadTranslationUnit(). Running c-index-test without the correct arguments now also prints a useful summary of its correct usage.
...
llvm-svn: 89115
2009-11-17 18:09:14 +00:00
Sebastian Redl
6eedcc1b86
Adjust format attribute index for implicit object arguments. Fixes PR5521.
...
llvm-svn: 89113
2009-11-17 18:02:24 +00:00
Douglas Gregor
8ce3321eb6
Implement code completion for Objective-C message sends to "super".
...
llvm-svn: 89112
2009-11-17 17:59:40 +00:00
Anders Carlsson
6aa503900f
Fix PR5531.
...
llvm-svn: 89106
2009-11-17 17:11:23 +00:00
Douglas Gregor
d3c5d79837
Augment code-completion results to provide argument names and
...
placeholder arguments for Objective-C message sends.
llvm-svn: 89103
2009-11-17 16:44:22 +00:00
Ken Dyck
f78dc738a5
Use the INTn_C integer constant macros to generate limit constants with correct
...
suffixes. This corrects the suffixes for the limit constants of the 32-bit
types on MSP430 and PIC16, and the 64-bit types on PPC64, SystemZ, X86_64.
llvm-svn: 89101
2009-11-17 16:26:27 +00:00
Benjamin Kramer
b70e4aba9a
Make test header independent so it doesn't fail on freebsd. I hope this doesn't
...
hurt the intention of the test.
llvm-svn: 89096
2009-11-17 14:02:16 +00:00
Ken Dyck
e115235705
Remove unnecessary parens around the bodies of integer constant macros. C99
...
requires that their arguments be decimal, hex, octal constants---no signs
allowed---making the parens unnecessary.
llvm-svn: 89095
2009-11-17 13:54:02 +00:00
Daniel Dunbar
f386ce5429
... and add back a few more triple forces.
...
llvm-svn: 89088
2009-11-17 10:27:58 +00:00
Daniel Dunbar
633d5b3ee2
Use clang to run tests which include headers from the system.
...
llvm-svn: 89085
2009-11-17 10:14:55 +00:00
Daniel Dunbar
cba26d4dc5
Add some -triples I was a little too liberal in removing.
...
llvm-svn: 89084
2009-11-17 10:04:38 +00:00
Daniel Dunbar
7e4ae04bed
Merge several visibility tests into hidden-visibility.m, and check .ll output
...
not .s output.
llvm-svn: 89083
2009-11-17 10:04:28 +00:00
Daniel Dunbar
fba0b44d35
Use -fblocks and -fobjc-nonfragile-abi when that is what is being tested, instead of forcing the triple.
...
llvm-svn: 89072
2009-11-17 09:04:12 +00:00
Zhongxing Xu
23baa01af4
Add PreVisitReturn to Malloc checker. Now we can recognize returned memory
...
block.
llvm-svn: 89071
2009-11-17 08:58:18 +00:00
Daniel Dunbar
feedba68b5
Don't #include <stdio.h> when tests don't need it, or use clang instead of clang-cc when they do.
...
llvm-svn: 89070
2009-11-17 08:57:36 +00:00
Daniel Dunbar
f85fabec35
Remove some redundant tests.
...
llvm-svn: 89069
2009-11-17 08:57:06 +00:00
John McCall
7731b855dc
Commit this random test case.
...
llvm-svn: 89068
2009-11-17 08:57:02 +00:00
Daniel Dunbar
4930e3357b
Add -fblocks, -stack-protector, and -fobjc-nonfragile-abi defaulting to driver,
...
instead of using getDefaultLangOptions.
- Remove unused -fobjc-tight-layout while at it.
llvm-svn: 89065
2009-11-17 08:07:36 +00:00
Zhongxing Xu
4668c7ed1c
Add EvalEndPath interface to Checker. Now we can check memory leaked at the
...
end of the path. Need to unify interfaces.
llvm-svn: 89063
2009-11-17 07:54:15 +00:00
Daniel Dunbar
4656c53e12
Move -fnext-runtime defaulting to driver (and change clang-cc default to
...
-fnext-runtime), instead of using getDefaultLangOptions.
llvm-svn: 89058
2009-11-17 07:07:28 +00:00
Daniel Dunbar
d609b7bbe9
Move char-is-signed defaulting to driver, instead of using
...
getDefaultLangOptions.
llvm-svn: 89053
2009-11-17 06:37:03 +00:00
Ted Kremenek
99b944c037
Add newline at the end of the file.
...
llvm-svn: 89052
2009-11-17 06:34:24 +00:00
Douglas Gregor
e0b2866147
Implement template instantiation for using directives, which is dead simple.
...
Also, make the "don't know how to instantiate a particular kind of
declaration" diagnostic nicer, so we don't have to trap Clang in a
debugger to figure out what went wrong.
llvm-svn: 89050
2009-11-17 06:07:40 +00:00
Ted Kremenek
4c4d643b6e
Have clang_getCursorSource() return NULL when the source location is invalid or refers to a built-in buffer. Implements <rdar://problem/7296243>.
...
llvm-svn: 89044
2009-11-17 05:31:58 +00:00
Douglas Gregor
3fad61786e
Require the object type of a member access expression ("." or "->") to
...
be complete.
llvm-svn: 89042
2009-11-17 05:17:33 +00:00
Anders Carlsson
dee9a30204
Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.
...
llvm-svn: 89034
2009-11-17 04:44:12 +00:00
Mike Stump
8f5e6770e7
Add typeinfo support for T* and const T* for all builtin types T.
...
llvm-svn: 89030
2009-11-17 02:57:13 +00:00
Ted Kremenek
5b2592ed65
Add test to verify that the analyzer plist output is what we expect.
...
llvm-svn: 89029
2009-11-17 02:31:39 +00:00
Mike Stump
3f75d552a3
Add typeid for the builtin types. WIP.
...
llvm-svn: 89028
2009-11-17 02:16:21 +00:00
Jakob Stoklund Olesen
4359796e52
Fix tests after enabling -split-phi-edges.
...
object-size.c aws simply too fragile.
constructor-default-arg.cpp triggers an issue when LiveVariables is run before RALocal.
llvm-svn: 89025
2009-11-17 01:47:01 +00:00
Eli Friedman
b0bc559b19
PR5526: Make sure to set the right cast kinds for the inserted implicit casts.
...
llvm-svn: 89023
2009-11-17 01:22:05 +00:00
Mike Stump
c2c03349f3
Ensure we peer through () when handling typeid(*p).
...
llvm-svn: 89015
2009-11-17 00:45:21 +00:00
Ted Kremenek
c40943224d
Remove extra space in warn_maynot_respond diagnostic. Fixes <rdar://problem/7364274>.
...
llvm-svn: 89013
2009-11-17 00:35:14 +00:00
Mike Stump
8a5acf1440
Note why this doesn't yet work.
...
llvm-svn: 89012
2009-11-17 00:30:31 +00:00
Mike Stump
61232fd252
Trim spacing.
...
llvm-svn: 89006
2009-11-17 00:14:04 +00:00
Eli Friedman
e85ef718d5
Fix up EmitMemberInitializer to handle many more cases.
...
llvm-svn: 88999
2009-11-16 23:53:01 +00:00
Mike Stump
82a1e6184a
Testcase for dynamic_cast.
...
llvm-svn: 88996
2009-11-16 23:36:30 +00:00
Eli Friedman
c1daba3ec8
Make member initializers for union members work correctly.
...
llvm-svn: 88989
2009-11-16 22:58:01 +00:00
Daniel Dunbar
5e1415156a
Update test, I don't know why this changed but seems innocuous.
...
llvm-svn: 88983
2009-11-16 22:38:57 +00:00
Eli Friedman
c2ef215bda
Implement a few more cases for copy constructor synthesis.
...
llvm-svn: 88971
2009-11-16 21:47:41 +00:00
Sebastian Redl
658262fd26
Repair broken FindCompositePointerType. Correct early termination condition. Get CVR qualifiers from canonical types. Traverse collected qualifiers in reverse order on rebuilding the pointer, so that we don't swap inner and outer qualifiers. That last one fixes PR5509.
...
llvm-svn: 88960
2009-11-16 21:03:45 +00:00
Mike Stump
4cdedd9d44
Fix members to be public.
...
llvm-svn: 88944
2009-11-16 19:48:50 +00:00
Mike Stump
3d47c2b3c2
Make bots happy.
...
llvm-svn: 88941
2009-11-16 19:34:15 +00:00
Eli Friedman
f2f534d12a
Fix PR5488: special-case the overloaded arrow operator so that we don't try to
...
treat it as a unary operator.
llvm-svn: 88938
2009-11-16 19:13:03 +00:00
Fariborz Jahanian
9290ede494
Handle case of missing '@end' in implementation context
...
gracefully, on par with gcc, by: Issuing a warning,
doing final sematinc check of its definitions and generating
its meta-data.
llvm-svn: 88934
2009-11-16 18:57:01 +00:00
Mike Stump
6fa768df29
Fix spelling for target triplet.
...
llvm-svn: 88928
2009-11-16 18:06:39 +00:00
Ken Dyck
2dc8d5fa3e
Parameterize the constant-generating macros in stdint.h with new built-in
...
__INTn_C_SUFFIX__ macros that are defined for types with corresponding
constant suffixes (i.e. long and long long).
llvm-svn: 88914
2009-11-16 16:36:33 +00:00
Mike Stump
266ee4a5b3
Try and fix buildbot issue.
...
llvm-svn: 88900
2009-11-16 06:49:10 +00:00
Eli Friedman
e6ce354795
Fix a couple of cases where we weren't generating the right kind of call
...
for a call to a virtual function.
llvm-svn: 88891
2009-11-16 05:31:29 +00:00
Eli Friedman
011c4c341b
Implement two-argument form of delete operator.
...
llvm-svn: 88890
2009-11-16 05:16:40 +00:00
Eli Friedman
794d4d8127
Fix test on Linux.
...
llvm-svn: 88889
2009-11-16 05:14:40 +00:00
Eli Friedman
141fbf3f36
Add constant evaluation for comma operator with floating-point operand. Fixes
...
PR5449.
llvm-svn: 88885
2009-11-16 04:25:37 +00:00
Anders Carlsson
7ade203c6c
Deallocation functions must also be static.
...
llvm-svn: 88859
2009-11-15 19:08:46 +00:00
Anders Carlsson
623e9798df
allocation functions are always static.
...
llvm-svn: 88858
2009-11-15 18:59:32 +00:00
Mike Stump
a46efbb857
Fix linux buildbots.
...
llvm-svn: 88856
2009-11-15 17:57:00 +00:00
Mike Stump
1bf924b121
Finish off zero check for typeid(*p) so that it will do a __cxa_bad_typeid.
...
llvm-svn: 88852
2009-11-15 16:52:53 +00:00
Anders Carlsson
2c9e274e57
If we find a deallocation function in the class scope, but it is a placement function we should not look for a deallocation function in the global scope.
...
llvm-svn: 88851
2009-11-15 16:43:15 +00:00
Douglas Gregor
8f3952cda9
When performing a static downcast as part of a static_cast, make sure
...
that we're dealing with canonical types like the documentation say
(yay, CanQualType). Alas, this is another instance where using
getQualifiers() on a non-canonical QualType got us in trouble.
Good news: with this fix, Clang can now parse all of its own headers!
llvm-svn: 88848
2009-11-15 09:20:52 +00:00
Douglas Gregor
598caeee37
Don't gratuitously mark the default constructors of base or member initializers as used
...
llvm-svn: 88847
2009-11-15 08:51:10 +00:00
Douglas Gregor
54fdb417fe
When adding the underlying declaration of a decl to a lookup-results
...
set, expand overloaded function declarations. Long-term, this should
actually be done by the name-lookup code rather than here, but this
part of the code (involving using declarations) is getting a makeover
now and the test-case is useful.
llvm-svn: 88846
2009-11-15 08:11:13 +00:00
Mike Stump
c9b231c8d1
Implement typeid for class types.
...
llvm-svn: 88843
2009-11-15 08:09:41 +00:00
Douglas Gregor
c473cbb3b2
When looking for operator() to type-check a call to an object of class
...
type, use full qualified name lookup rather than the poking the
declaration context directly. This makes sure that we see operator()'s
in superclasses. Also, move the complete-type check before this name
lookup.
llvm-svn: 88842
2009-11-15 07:48:03 +00:00
Mike Stump
4c808dfc58
Finish off support for typeinfo generation for classes.
...
llvm-svn: 88828
2009-11-15 03:28:10 +00:00
Daniel Dunbar
e13ada6a3b
Add clang -mcpu=native support, patch by Roman Divacky, varioustweaks by me.
...
- We still need support for detecting the target features, since the name
doesn't actually do a good job of decribing what the CPU supports (for LLVM).
llvm-svn: 88819
2009-11-14 22:04:54 +00:00
Anders Carlsson
6d41727a95
Add an internal CreateRecordDecl that will create a CXXRecordDecl when compiling C++ and a RecordDecl otherwise.
...
llvm-svn: 88816
2009-11-14 21:45:58 +00:00
Anders Carlsson
461a2c0640
Always build a builtin operator expression for the __extension__ unary operator.
...
llvm-svn: 88811
2009-11-14 21:26:41 +00:00
Anders Carlsson
50cb321fdc
Handle CK_BitCast in EmitCastLValue.
...
llvm-svn: 88810
2009-11-14 21:21:42 +00:00
Sebastian Redl
7c353685bc
- Have TryStaticImplicitCast set the cast kind to NoOp when binding a reference. CheckReferenceInit already inserts implicit casts to the necessary types. This fixes an assertion in CodeGen for some casts and brings a fix for PR5453 close, if I understand that bug correctly.
...
- Also, perform calculated implicit cast sequences if they're determined to work. This finally diagnoses static_cast to ambiguous or implicit bases and fixes two long-standing fixmes in the test case. For the C-style cast, this requires propagating the access check suppression pretty deep into other functions.
- Pass the expressions for TryStaticCast and TryStaticImplicitCast by reference. This should lead to a better AST being emitted for such casts, and also fixes a memory leak, because CheckReferenceInit and PerformImplicitConversion wrap the node passed to them. These wrappers were previously lost.
llvm-svn: 88809
2009-11-14 21:15:49 +00:00
Anders Carlsson
0acee6e0d7
Canonicalize the type before trying to create a debug type.
...
llvm-svn: 88808
2009-11-14 21:08:12 +00:00
Daniel Dunbar
cf5be70032
Improve test to make sure -fixit is really working.
...
llvm-svn: 88801
2009-11-14 19:25:21 +00:00
Eli Friedman
274ab904d0
Avoid assert-crash in a case where the expression passed to EmitConstantExpr
...
legitimately has side-effects (and needs to be generated as a non-constant).
llvm-svn: 88767
2009-11-14 08:51:33 +00:00
Eli Friedman
b210fc598f
Make __func__ and friends work correctly within the initializer for a static
...
local variable.
llvm-svn: 88766
2009-11-14 08:37:13 +00:00
Eli Friedman
a9ea959d04
PR5462: Don't run off the edge of the argument array for vararg handling
...
when there are more parameters in the prototype than arguments to the call.
llvm-svn: 88759
2009-11-14 04:43:10 +00:00
Daniel Dunbar
6c39d457fa
Update FixIt tests to make it more obvious they use a separate mode.
...
llvm-svn: 88758
2009-11-14 04:39:42 +00:00
Eli Friedman
b774685c08
Fix a couple of tests.
...
llvm-svn: 88756
2009-11-14 04:23:25 +00:00
Eli Friedman
b572c92674
PR5483: Generate missing form of destructor when it is virtual. (Someone
...
more familiar with this stuff should double-check that there isn't some more
general rule; this is purely from inspecting g++ output.)
llvm-svn: 88755
2009-11-14 04:19:37 +00:00
Eli Friedman
c9827d1ad3
Fix for PR5489: don't skip the complete type requrirement for variable
...
definitions just because the type happens to be an array type.
llvm-svn: 88752
2009-11-14 03:40:14 +00:00
Douglas Gregor
bf3f322034
When type-checking a static cast (or the static_cast part of a C-style
...
cast) that is converting to a class type, enumerate its constructors
as in any other direct initialization. This ensures that we get the
proper conversion sequence.
llvm-svn: 88751
2009-11-14 03:27:21 +00:00
Daniel Dunbar
9d5118a69c
Fix broken tests, exposed by improved -verify.
...
llvm-svn: 88749
2009-11-14 03:24:04 +00:00
Anders Carlsson
654e5c7cf8
Diagnose ambiguity of operator delete and operator delete[]. Sebastian, please review.
...
llvm-svn: 88747
2009-11-14 03:17:38 +00:00
Anders Carlsson
52ce3bbf57
Handle CXXDefaultArgExprs in EmitLValue. Fixes PR5484.
...
llvm-svn: 88735
2009-11-14 01:51:50 +00:00
Douglas Gregor
ffe14e3712
If we attempt to add a constructor template specialization that looks
...
like a copy constructor to the overload set, just ignore it. This
ensures that we don't try to use such a constructor as a copy
constructor *without* triggering diagnostics at the point of
declaration.
Note that we *do* diagnose such copy constructors when explicitly
written by the user (e.g., as an explicit specialization).
llvm-svn: 88733
2009-11-14 01:20:54 +00:00
Douglas Gregor
ff7028a55e
Revert r88718, which does NOT solve the constructor-template-as-copy-constructor issue. Big thanks to John for finding this
...
llvm-svn: 88724
2009-11-13 23:59:09 +00:00
Douglas Gregor
2bb756a3be
Template argument deduction of a non-type template parameter from a
...
template argument.
llvm-svn: 88722
2009-11-13 23:45:44 +00:00
Douglas Gregor
5f235a21eb
A constructor template cannot be instantiated to a copy
...
constructor. Make sure that such declarations can never be formed.
llvm-svn: 88718
2009-11-13 23:14:53 +00:00
Fariborz Jahanian
ebea005812
Code gen. For virtual destructor call on array objects
...
(still part of pr5472).
llvm-svn: 88712
2009-11-13 22:29:45 +00:00
Mike Stump
2fb78c0250
More VTT and constructor vtable testcases from recent work.
...
llvm-svn: 88710
2009-11-13 22:12:05 +00:00
Mike Stump
3693652378
Add more testcase for construction vtables and VTTs.
...
llvm-svn: 88702
2009-11-13 21:55:26 +00:00
Mike Stump
464de23b72
Add some more VTT testcases.
...
llvm-svn: 88699
2009-11-13 21:40:38 +00:00
Eli Friedman
6f04b1e605
Obvious fix for PR5474.
...
llvm-svn: 88696
2009-11-13 21:23:46 +00:00
Ted Kremenek
9430bf20ff
Remove test case's dependency on header file.
...
llvm-svn: 88685
2009-11-13 20:03:22 +00:00
Ted Kremenek
e5e977013c
Add two new test cases for the Malloc/Free checker. Both have to do with
...
storing malloc'ed memory to global storage.
llvm-svn: 88684
2009-11-13 20:00:28 +00:00
Ted Kremenek
c2675568a1
Add test case that shows a leak we don't catch.
...
llvm-svn: 88683
2009-11-13 19:53:32 +00:00
Mike Stump
e56213fc1e
Add a testcase for the recent VTT work.
...
llvm-svn: 88681
2009-11-13 19:36:46 +00:00
Fariborz Jahanian
6814eaa2cc
Code gen for arrady delete operator. Fixes pr5472.
...
llvm-svn: 88680
2009-11-13 19:27:47 +00:00
Daniel Dunbar
dd6e6918e6
Add test for expr.delete p5, with a FIXME.
...
llvm-svn: 88678
2009-11-13 19:13:56 +00:00
Mike Stump
88fc7d4202
This falls into the category of stupid pet tricks. I hate to do this,
...
but this is necessary to continue work on virtual vtables. We don't
want to penalize virtual table building testcases, just because
complex virtual conversions don't yet work.
llvm-svn: 88676
2009-11-13 18:53:35 +00:00
Ted Kremenek
4ef13f8ac9
Add clang-cc option "--analyzer-experimental-internal-checks". This
...
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.
llvm-svn: 88671
2009-11-13 18:46:29 +00:00
Douglas Gregor
379d84b7ed
When performing copy initialization (= "implicit conversion", here) to
...
a class type from itself or a derived class thereof, enumerate
constructors and permit user-defined conversions to the arguments of
those constructors. This fixes the wacky implicit conversion sequence
used in std::auto_ptr's lame emulation of move semantics.
llvm-svn: 88670
2009-11-13 18:44:21 +00:00
Anders Carlsson
97df0b40c3
Don't bind arguments to temporaries if the argument has a reference type.
...
llvm-svn: 88662
2009-11-13 17:04:35 +00:00
Zhongxing Xu
c7460964ac
Malloc checker basically works now.
...
llvm-svn: 87094
2009-11-13 07:48:11 +00:00
Anders Carlsson
78cfaa9e56
Fix two bugs with temporaries:
...
1. For
A f() {
return A();
}
we were incorrectly calling the A destructor on the returned object.
2. For
void f(A);
void g() {
A a;
f(a);
}
we were incorrectly not calling the copy constructor.
llvm-svn: 87082
2009-11-13 04:34:45 +00:00
Fariborz Jahanian
eb80c98a72
Fix a code gen bug in i386-apple-darwin (objc fragile abi), sending
...
message to 'super'. Fixes radar 7205866.
llvm-svn: 87017
2009-11-12 20:14:24 +00:00
Douglas Gregor
49ba3cabdd
Recognize (and check) pointer-to-member template arguments that are
...
non-type template parameters or constants of pointer-to-member
type. Once checked, be sure to retain those pointer-to-member
constants as expressions if they are dependent, or as declarations if
they are not dependent.
llvm-svn: 87010
2009-11-12 18:38:13 +00:00
Douglas Gregor
4e948ce769
When instantiating a reference to a non-type template parameter of pointer to
...
member type (e.g., T Class::*Member), build a pointer-to-member
constant expression. Previously, we we just building a simple
declaration reference expression, which meant that the expression was
not treated as a pointer to member.
llvm-svn: 87000
2009-11-12 17:40:13 +00:00
Douglas Gregor
19ac2d6494
When comparing template parameter lists, distinguish between three cases:
...
- Comparing template parameter lists to determine if we have a redeclaration
- Comparing template parameter lists to determine if we have equivalent
template template parameters
- Comparing template parameter lists to determine whether a template
template argument is valid for a given template template parameter.
Previously, we did not distinguish between the last two cases, which
got us into trouble when we were looking for exact type matches
between the types of non-type template parameters that were dependent
types. Now we do, so we properly delay checking of template template
arguments until instantiation time.
Also, fix an accidental fall-through in a case statement that was
causing crashes.
llvm-svn: 86992
2009-11-12 16:20:59 +00:00
Chris Lattner
55c9877b66
Generalize stdint.h for non-8-bit-multiple types, patch by
...
Ken Dyck!
"This adds definitions for types of 8-bit multiples
from 8 to 64 to stdint.h and rationalizes the selection of types
for the exact-width definitions in InitPreprocessor.cpp."
llvm-svn: 86977
2009-11-12 08:08:27 +00:00
Chris Lattner
0fb5bbd401
do not store wchar/char16/char32/intmax width/alignment info
...
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!
llvm-svn: 86976
2009-11-12 08:04:33 +00:00
Daniel Dunbar
f4408a29e1
Fix PCH/preprocess test to be more useful, and unbreak -E mode with implicit
...
PCH, which I broke.
llvm-svn: 86921
2009-11-12 01:36:20 +00:00
Douglas Gregor
dd6c0356ba
Improve recovery in a wonky case where one tries to specialize a
...
template template parameter.
When building a template-id type, check whether the template-name
itself is dependent (even if the template arguments are not!) and
handle it as a template-id type.
llvm-svn: 86913
2009-11-12 00:46:20 +00:00
Daniel Dunbar
d8ff51bf49
Fix test portability.
...
llvm-svn: 86911
2009-11-12 00:41:41 +00:00
John McCall
b0e419e34d
Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
...
and give that category an explicit test. Generalize the internal diagnostic
name.
llvm-svn: 86905
2009-11-12 00:06:05 +00:00
Douglas Gregor
c998409cce
Remove an overly-eager assertion when replacing tokens with an
...
annotation token, because some of the tokens we're annotating might
not be in the set of cached tokens (we could have consumed them
unconditionally).
Also, move the tentative parsing from ParseTemplateTemplateArgument
into the one caller that needs it, improving recovery.
llvm-svn: 86904
2009-11-12 00:03:40 +00:00
Douglas Gregor
adee3e3b22
Template argument deduction for template template parameters. This
...
permits, among other things, ripping apart and reconstructing
templates via partial specialization:
template<typename T>
struct DeepRemoveConst { typedef T type; };
template<typename T>
struct DeepRemoveConst<const T> {
typedef typename DeepRemoveConst<T>::type type;
};
template<template<typename> class TT, typename T>
struct DeepRemoveConst<TT<T> > {
typedef TT<typename DeepRemoveConst<T>::type> type;
};
Also, fix a longstanding thinko in the code handling partial ordering
of class template partial specializations. We were performing the
second deduction without clearing out the results of the first
deduction. It's amazing we got through so much code with such a
horrendous error :(
llvm-svn: 86893
2009-11-11 23:06:43 +00:00
John McCall
5055e4cdfd
Fix PR 5422: handle lvalue results when evaluating 'based' ptrtoints as part of
...
the -Wconversion check.
llvm-svn: 86891
2009-11-11 22:52:37 +00:00
Fariborz Jahanian
d708eb6b6a
Make test more platform independent.
...
llvm-svn: 86890
2009-11-11 22:49:09 +00:00
Fariborz Jahanian
c3091c9118
Make test more platform independent (per Sebastian's comment).
...
llvm-svn: 86888
2009-11-11 22:45:41 +00:00
Fariborz Jahanian
13e0c90fc1
writable atomic property's setter/getter must be in 'lock' step of
...
either both synthesized or bith user defined.
Implements radar 6557233.
llvm-svn: 86887
2009-11-11 22:40:11 +00:00
Douglas Gregor
84d49a2085
Improve diagnostics when a default template argument does not match
...
with its corresponding template parameter. This can happen when we
performed some substitution into the default template argument and
what we had doesn't match any more, e.g.,
template<int> struct A;
template<typename T, template<T> class X = A> class B;
B<long> b;
Previously, we'd emit a pretty but disembodied diagnostic showing how
the default argument didn't match the template parameter. The
diagnostic was good, but nothing tied it to the *use* of the default
argument in "B<long>". This commit fixes that.
Also, tweak the counting of active template instantiations to avoid
counting non-instantiation records, such as those we create for
(surprise!) checking default arguments, instantiating default
arguments, and performing substitutions as part of template argument
deduction.
llvm-svn: 86884
2009-11-11 21:54:23 +00:00
Douglas Gregor
e62e6a0191
Before checking a template template argument against its corresponding
...
template template parameter, substitute any prior template arguments
into the template template parameter. This, for example, allows us to
properly check the template template argument for a class such as:
template<typename T, template<T Value> class X> struct Foo;
The actual implementation of this feature was trivial; most of the
change is dedicated to giving decent diagnostics when this
substitution goes horribly wrong. We now get a note like:
note: while substituting prior template arguments into template
template parameter 'X' [with T = float]
As part of this change, enabled some very pedantic checking when
comparing template template parameter lists, which shook out a bug in
our overly-eager checking of default arguments of template template
parameters. We now perform only minimal checking of such default
arguments when they are initially parsed.
llvm-svn: 86864
2009-11-11 19:13:48 +00:00
Fariborz Jahanian
03f62ed9bb
Value initialize non-class array members in ctor's
...
initializer list. Fixes PR5463.
llvm-svn: 86849
2009-11-11 17:55:25 +00:00
Ted Kremenek
91989d166a
Split buffer overflow test case into two test cases, removing out logic that was commented out.
...
llvm-svn: 86845
2009-11-11 17:17:06 +00:00
Douglas Gregor
38fee967ae
Instantiation of template template parameters for nested templates, e.g.,
...
template<typename T>
struct X {
template<template<T Value> class Y> struct Inner;
};
llvm-svn: 86844
2009-11-11 16:58:32 +00:00
Douglas Gregor
120635bc9c
Fix speculative parsing of dependent template names in
...
nested-name-specifiers so that they don't gobble the template name (or
operator-function-id) unless there is also a
template-argument-list. For example, given
T::template apply
we would previously consume both "template" and "apply" as part of
parsing the nested-name-specifier, then error when we see that there
is no "<" starting a template argument list. Now, we parse such
constructs tentatively, and back off if the "<" is not present. This
allows us to parse dependent template names as one would use them for,
e.g., template template parameters:
template<typename T, template<class> class X = T::template apply>
struct MetaSomething;
Also, test default arguments for template template parameters.
llvm-svn: 86841
2009-11-11 16:39:34 +00:00
Zhongxing Xu
b166712d02
Add undefined array subscript checker.
...
llvm-svn: 86837
2009-11-11 13:42:54 +00:00
Zhongxing Xu
4f7759a339
Reimplement out-of-bound array access checker with the new checker interface.
...
Now only one test case is XFAIL'ed.
llvm-svn: 86834
2009-11-11 12:33:27 +00:00
Ted Kremenek
04552cbef0
CastToStructChecker: use 'isStructureType()' instead of 'isRecordType()' to determine if a pointer is casted to a struct pointer. This fixes an observed false positive when a value is casted to a union.
...
llvm-svn: 86813
2009-11-11 06:43:42 +00:00
Daniel Dunbar
775f18520c
And now a test fix in +Asserts mode, which I broke.
...
llvm-svn: 86801
2009-11-11 03:48:34 +00:00
Daniel Dunbar
568e302a7f
Fix some tests in -Asserts mode.
...
- FileCheck is a *huuuuge* improvement here.
- Still feels like we could use a better tool for this though, either teach
llvm-dis to spit out the FileCheck syntax, or provide another tool to turn a
.ll into a "matchable" input.
- Also on my Christmas list is better FileCheck diagnostics with missing
variables or mismatches.
llvm-svn: 86800
2009-11-11 03:48:26 +00:00
John McCall
0506e4af2c
Apparently the following idiom is specifically encouraged:
...
if (self = [super init])
Recognize it and only warn if -Wparentheses is explicitly enabled.
llvm-svn: 86790
2009-11-11 02:41:58 +00:00
Douglas Gregor
9167f8bbd5
Introduce a new representation for template template
...
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.
The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.
This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
- the inability to use dependent template names as template template
arguments
- template template parameter default arguments cannot be
instantiation
However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.
llvm-svn: 86777
2009-11-11 01:00:40 +00:00
John McCall
caef2448da
Create a new Scope when parsing a declaration with a C++ scope specifier.
...
llvm-svn: 86764
2009-11-11 00:21:18 +00:00
Fariborz Jahanian
4e088941ad
Diagnose illegally typed operator new/new[].
...
llvm-svn: 86755
2009-11-10 23:47:18 +00:00
Eli Friedman
3ad2645430
Fix for PR5454: make sure to use the right block as the predecessor in the
...
generated PHI node for the null check of a new operator.
llvm-svn: 86738
2009-11-10 22:39:09 +00:00
Ted Kremenek
f9a28abe8d
Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>.
...
llvm-svn: 86731
2009-11-10 22:16:29 +00:00
Fariborz Jahanian
1254a0978c
This patch implements Code gen. for destruction of
...
global array of objects.
llvm-svn: 86701
2009-11-10 19:24:06 +00:00
John McCall
9757d0363d
Make a somewhat more convincing test case for unqualified lookup through
...
using directives, and fix a bug thereby exposed: since we're playing
tricks with pointers, we need to make certain we're always using the same
pointers for things.
Also tweak an existing error message.
llvm-svn: 86679
2009-11-10 09:20:04 +00:00
John McCall
a31577ce9a
Simple test case for [basic.lookup.udir].
...
llvm-svn: 86674
2009-11-10 07:56:40 +00:00
John McCall
f6c8a4ef1f
Fix unqualified lookup through using directives.
...
This is a pretty minimal test case; I'll make a better one later.
llvm-svn: 86669
2009-11-10 07:01:13 +00:00
Anders Carlsson
ace5d07e50
When trying to assign a regular string literal to an Objective-C 'id' type or a pointer to an NSString, emit a code insertion hint that turns it into an Objective-C string. For example:
...
@class NSString;
@interface Test
+ (void)test:(NSString *)string;
@end
void g(NSString *a);
void f() {
NSString *a = "Foo";
g("Foo");
[Test test:"Foo"];
}
will produce
t.m:10:17: warning: incompatible pointer types initializing 'char [4]', expected 'NSString *'
NSString *a = "Foo";
^~~~~
@
t.m:11:5: warning: incompatible pointer types passing 'char [4]', expected 'NSString *'
g("Foo");
^~~~~
@
t.m:12:14: warning: incompatible pointer types sending 'char [4]', expected 'NSString *'
[Test test:"Foo"];
^~~~~
@
3 diagnostics generated.
llvm-svn: 86665
2009-11-10 04:46:30 +00:00
Anders Carlsson
0b8ea554e5
If a function with a default argument is redefined and the new function also has a defualt argument then add a fixit hint that removes the default argument. Fixes PR5444.
...
llvm-svn: 86659
2009-11-10 03:24:44 +00:00
Zhongxing Xu
70ba4908d0
Add test case for PointerSubChecker.
...
llvm-svn: 86657
2009-11-10 02:45:49 +00:00
Zhongxing Xu
80bbc6d138
Refine PointerSubChecker: compare the base region instead of the original
...
region, so that arithmetic within a memory chunk is allowed.
llvm-svn: 86652
2009-11-10 02:37:53 +00:00
Mike Stump
68ec7ee0e8
Enable the use of the new llvm objectsize intrinsic.
...
llvm-svn: 86607
2009-11-09 22:40:09 +00:00
Fariborz Jahanian
b98dade25b
Changed error for nested type qualifier mismatch to
...
warning, to match gcc. It used to be warning, so
better keep it a warning (it broke a certain project).
llvm-svn: 86597
2009-11-09 22:16:37 +00:00
Douglas Gregor
8caea94c74
Make sure that we look into nested, transparent declaration contexts
...
when looking for a name within a given DeclContext. Now enumerators
will show up in code-completion results.
llvm-svn: 86591
2009-11-09 21:35:27 +00:00
Fariborz Jahanian
facfdd4d93
For array pointee type, get its cvr qualifier from
...
its element type. Fixes pr5432.
llvm-svn: 86587
2009-11-09 21:02:05 +00:00
Douglas Gregor
1bc688dc60
Make sure that we instantiate default function arguments for an
...
overloaded operator().
llvm-svn: 86581
2009-11-09 19:27:57 +00:00
Eli Friedman
9cf6b59400
Add additional note to mark the cause of synthesized constructors. Mark
...
declaration invalid if the constructor can't be properly built. Addresses
remaining review comments from Fariborz for r86500.
llvm-svn: 86579
2009-11-09 19:20:36 +00:00
Douglas Gregor
36d7c5f29b
Improve instantiation of default template arguments for nested
...
templates. The instantiation of these default arguments must be (and
now, is) delayed until the template argument is actually used, at
which point we substitute all levels of template arguments
concurrently.
llvm-svn: 86578
2009-11-09 19:17:50 +00:00
Eli Friedman
56acd1e819
Add code generation test for r86500.
...
llvm-svn: 86574
2009-11-09 18:49:09 +00:00
Fariborz Jahanian
222c0b517e
Test case for Sean Hunt's patch which I left out.
...
llvm-svn: 86573
2009-11-09 18:48:53 +00:00
Eli Friedman
e4310c8273
Add support for cdecl attribute. (As far as I know, it doesn't affect CodeGen
...
unless we start implementing command-line switches which override the default
calling convention, so the effect is mostly to silence unknown attribute
warnings.)
llvm-svn: 86571
2009-11-09 18:38:53 +00:00
Douglas Gregor
a8ab71bad7
Slightly more testing for instantiation of non-type template parameters in nested templates, for my own sanity's sake
...
llvm-svn: 86570
2009-11-09 18:29:00 +00:00
Anders Carlsson
2256497780
Add a triple to try to fix the buildbot error.
...
llvm-svn: 86563
2009-11-09 17:54:53 +00:00
Anders Carlsson
69999d9c23
__uint128_t is indeed an unsigned integer type. Fixes PR5435.
...
llvm-svn: 86561
2009-11-09 17:34:18 +00:00
Douglas Gregor
5ea234dcec
Simplify test to deal with type-based ordering variations
...
llvm-svn: 86552
2009-11-09 16:22:45 +00:00
Douglas Gregor
022d3c2f42
Verify that code-completion is at least a little bit robust against inclusion of missing headers
...
llvm-svn: 86551
2009-11-09 16:06:30 +00:00
Douglas Gregor
8b14f8fde4
Minor cleanup for CIndex-based code-completion:
...
- Provide an actual test for code-completion via CIndex.
- Actually print optional strings in c-index-test
- Export clang_getCompletionChunkCompletionString from CIndex
llvm-svn: 86550
2009-11-09 16:04:45 +00:00
Zhongxing Xu
6d967cbd8e
update test case.
...
llvm-svn: 86541
2009-11-09 13:56:44 +00:00
Zhongxing Xu
ab0e27ff0c
Add check for pointer arithmetic on non-array variables.
...
llvm-svn: 86538
2009-11-09 13:23:31 +00:00
Zhongxing Xu
d6e7f9d4b2
Add check for obsolete function call of getpw().
...
llvm-svn: 86537
2009-11-09 12:19:26 +00:00
Zhongxing Xu
f06c684a33
Add checker for CWE-588: Attempt to Access Child of a Non-structure Pointer.
...
llvm-svn: 86529
2009-11-09 08:07:38 +00:00
Zhongxing Xu
6c306c8b89
Add checker for CWE-587: Assignment of a Fixed Address to a Pointer.
...
llvm-svn: 86523
2009-11-09 06:52:44 +00:00
Zhongxing Xu
86b1e01c13
Add checker for CWE-469: Use of Pointer Subtraction to Determine Size. This
...
checker does not build sink nodes. Because svaluator computes an unknown value
for the subtraction now.
llvm-svn: 86517
2009-11-09 05:34:10 +00:00
Eli Friedman
cb29876839
Add hack to make the given testcase work. As far as I can tell, this change is
...
reasonably safe, but it doesn't seem like the right solution.
llvm-svn: 86508
2009-11-09 03:59:26 +00:00
Zhongxing Xu
0f92ec6ebd
Add a test case for CWE-467, and simplify the wording of the warning.
...
llvm-svn: 86504
2009-11-09 02:28:12 +00:00
Eli Friedman
d7686ef31c
Unify the codepaths used to verify base and member initializers for explicitly
...
and implicitly defined constructors. This has a number of benefits:
1. Less code.
2. Explicit and implicit constructors get the same diagnostics.
3. The AST explicitly contains constructor calls from implicit default
constructors. This allows handing some cases that previously weren't handled
correctly in IRGen without any additional code. Specifically, implicit default
constructors containing calls to constructors with default arguments are now
handled correctly.
llvm-svn: 86500
2009-11-09 01:05:47 +00:00
Sebastian Redl
14236c8e82
Special-case default argument expression in instantiation. This should fix PR4301. Doug, please double-check my assumptions. Read the PR for more details.
...
llvm-svn: 86465
2009-11-08 13:56:19 +00:00
Sebastian Redl
afb8be743d
When checking the namespace of a redeclaration or definition, look through linkage specs. Fixes PR5430.
...
llvm-svn: 86461
2009-11-08 11:36:54 +00:00
Sebastian Redl
3752e1dbb4
Don't reprocess non-dependent initializers of non-dependent VarDecls. Fixes PR5426.
...
llvm-svn: 86460
2009-11-08 10:16:43 +00:00
Daniel Dunbar
3b339a3aa3
Simplify.
...
llvm-svn: 86456
2009-11-08 09:46:39 +00:00
Daniel Dunbar
d90e0a113e
Drop require_and_and argument.
...
llvm-svn: 86433
2009-11-08 01:47:35 +00:00
Daniel Dunbar
34546ce43d
Remove RUN: true lines.
...
llvm-svn: 86432
2009-11-08 01:47:25 +00:00
Daniel Dunbar
6eb1201c90
Move test/Index input files into a sub directory (not scanned as tests).
...
llvm-svn: 86431
2009-11-08 01:46:19 +00:00
Daniel Dunbar
8b57697954
Eliminate &&s in tests.
...
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.
llvm-svn: 86430
2009-11-08 01:45:36 +00:00
Daniel Dunbar
066967052c
Rework site config for cmake to be generated at configure time, and only pass
...
the 'build_config' value in at runtime using the new lit runtime user parameter
feature.
This simplifies things and drops a dependency on 'sed', FWIW.
llvm-svn: 86421
2009-11-07 23:53:32 +00:00
Daniel Dunbar
8466a0d944
Tweak a FIXME.
...
llvm-svn: 86420
2009-11-07 23:53:17 +00:00
Anders Carlsson
5bbdc9f857
Handle member expressions where the member declaration is actually a static variable. Fixes PR5392.
...
llvm-svn: 86414
2009-11-07 23:16:50 +00:00
Chris Lattner
3f5124815d
commit test update
...
llvm-svn: 86396
2009-11-07 18:59:51 +00:00
Douglas Gregor
358e7745ed
Cope with calls to operator() templates. Fixes PR5419.
...
llvm-svn: 86387
2009-11-07 17:23:56 +00:00
John McCall
b61e9d03c1
Support -Wshorten-64-to-32 for integer types only, which seems to satisfy the
...
core requirements. Fixes rdar://problem/6389954
llvm-svn: 86364
2009-11-07 09:03:53 +00:00
Anders Carlsson
d3569efb5a
Add bug number.
...
llvm-svn: 86357
2009-11-07 08:24:59 +00:00
John McCall
b397956338
Improve -Wconversion by permitting binary operations on values of the target
...
type (or smaller) to stay "closed" within the type.
llvm-svn: 86356
2009-11-07 08:15:46 +00:00
Anders Carlsson
f5dc6fa252
Don't treat variables with non-trivial ctors or dtors as unused. Fixes PR5407.
...
llvm-svn: 86352
2009-11-07 07:26:56 +00:00
Anders Carlsson
c0a3561f0f
Always mangle functions with special names. Fixes PR5420.
...
llvm-svn: 86350
2009-11-07 07:15:03 +00:00
Anders Carlsson
3d70975917
When instantiating a field decl, make sure to clone its attributes. With this change FileCheck no longer crashes when it's run without any arguments.
...
llvm-svn: 86344
2009-11-07 06:07:58 +00:00
Anders Carlsson
ce21431fc4
When looking up and adding substitutions to the substitution table, make sure to always use the canonical declaration. With tihs change, FileCheck compiles and links but crashes during startup.
...
llvm-svn: 86339
2009-11-07 04:26:04 +00:00
John McCall
554e857cf4
Test case for -Wconversion.
...
llvm-svn: 86327
2009-11-07 03:30:38 +00:00
John McCall
fceb64bd04
Implement -Wconversion. Off by default, in the non-gcc group. There's
...
significant work left to be done to reduce the false-positive rate here.
llvm-svn: 86326
2009-11-07 03:30:10 +00:00
Steve Naroff
eae650366d
Add basic code completion support for ObjC messages.
...
Still a work in progress...
llvm-svn: 86323
2009-11-07 02:08:14 +00:00
Devang Patel
22053c0f46
MIPS linkage name confuses gdb here. Generate and test DW_AT_name here.
...
llvm-svn: 86318
2009-11-07 00:41:37 +00:00
Eli Friedman
01cad4c6b0
Make sure isCopyAssignment is only true for actual copy assignment operators,
...
instead of all assignment operators. The mistake messes up IRGen because
it ends up assuming that the assignment operator is actually the implicit
copy assignment operator, and therefore tries to emit the RHS as an lvalue.
llvm-svn: 86307
2009-11-07 00:02:45 +00:00
Douglas Gregor
9eb7701dff
Various improvements to Clang's code-completion infrastructure:
...
- Introduce more code-completion string "chunk" kinds that describe
symbols, the actual text that the user is expected to type, etc.
- Make the generation of macro results optional, since it can be
slow
- Make code-completion accessible through the C API, marshalling the
code-completion results through a temporary file (ick) to maintain
process separation.
The last doesn't have tests yet.
llvm-svn: 86306
2009-11-07 00:00:49 +00:00
Mike Stump
cd6f9ed906
Refine the non-virtual this adjustment. Optimize out virtual this
...
adjustments of zero.
llvm-svn: 86300
2009-11-06 23:27:42 +00:00
Fariborz Jahanian
3600f41a3a
Since default writable attribute is 'assign', allow
...
specification of 'assign' (no warning to be issued),
when a continuation class makes a 'readonly' attribute
'readwrite' but also specifies the 'assign' attribute.
(this matches gcc's behavior and prevents exessive
warnings)/
llvm-svn: 86297
2009-11-06 22:59:12 +00:00
Fariborz Jahanian
2f487126ce
Make fragile-abi test run happy.
...
llvm-svn: 86293
2009-11-06 22:15:27 +00:00
Fariborz Jahanian
95239110cd
Fix a bogus objective-c warning with -pedantic.
...
(radar 7370882).
llvm-svn: 86291
2009-11-06 21:48:47 +00:00
Fariborz Jahanian
e8e631c912
Prevent a code gen. crash on empty unions - pr5408.
...
llvm-svn: 86287
2009-11-06 20:47:40 +00:00
Ted Kremenek
e3423e84a9
testing: Merge PR3135.c into misc-ps-region-store.m.
...
llvm-svn: 86286
2009-11-06 20:32:38 +00:00
Ted Kremenek
df9ca633b6
Sentence-case bug type, and pull tests from region-only-test.c into misc-ps-region.store.m (removing an extra unneeded test file). Also add a bunch of FIXME comments for future enhancements.
...
llvm-svn: 86282
2009-11-06 20:16:31 +00:00
Anders Carlsson
443f677302
Simplify the debug info code, handle lvalue references and template specializations.
...
llvm-svn: 86277
2009-11-06 19:19:55 +00:00
Fariborz Jahanian
c2d71b531c
This patch fixes code gen. part of pr5333 (Conversion
...
using elipsis conversion).
llvm-svn: 86276
2009-11-06 18:47:57 +00:00
Anders Carlsson
8a6512961f
Handle QualifiedNameType and SubstTemplateTypeParmType types in CGDebugInfo::CreateTypeNode.
...
llvm-svn: 86274
2009-11-06 18:45:16 +00:00
Nuno Lopes
ac5eba93ca
add test case for PR3135 which was already fixed
...
llvm-svn: 86273
2009-11-06 18:42:13 +00:00
Zhongxing Xu
167bce9cf1
Add a checker for CWE-466: Return of Pointer Value Outside of Expected Range.
...
llvm-svn: 86252
2009-11-06 13:30:44 +00:00
John McCall
e46fd8531c
compare.c also needs a target triple now, and improve some comments while we're
...
at it.
llvm-svn: 86243
2009-11-06 08:53:51 +00:00
John McCall
99ce6bfe28
Improve the -Wsign-compare heuristics:
...
* If the unsigned type is smaller than the signed type, never warn, because
its value will not change when zero-extended to the larger type.
* If we're testing for (in)equality, and the unsigned value is an integer
constant whose sign bit is not set, never warn, because even though the
signed value might change, it can't affect the result of the equality.
Also make the comparison test cases much more rigorous, and have them expose
the subtle differences between C and C++ here.
llvm-svn: 86242
2009-11-06 08:49:08 +00:00
Douglas Gregor
d82ae38d53
Rework the fix-it hint for code like
...
get_origin->x
where get_origin is actually a function and the user has forgotten the
parentheses. Instead of giving a lame note for the fix-it, give a
full-fledge error, early, then build the call expression to try to
recover.
llvm-svn: 86238
2009-11-06 06:30:47 +00:00
Douglas Gregor
f4f2ff773b
Improve recovery when we fail to parse the operand of a C++ named cast. Fixes PR5210
...
llvm-svn: 86234
2009-11-06 05:48:00 +00:00
Douglas Gregor
6af6c3ee56
Turn off -Wsign-compare warnings by default
...
llvm-svn: 86233
2009-11-06 05:24:12 +00:00
Anders Carlsson
421a5c9651
If a member variable of reference type is bound to a temporary in its member initializer it needs to be destroyed at the end of the constructor.
...
llvm-svn: 86230
2009-11-06 04:19:02 +00:00
Anders Carlsson
5852b13827
If a member initializer create temporaries we need to destroy them. Fixes PR5077.
...
llvm-svn: 86225
2009-11-06 04:11:09 +00:00
Anders Carlsson
9e4e0237e4
Handle ParenExprs in mangleExpression.
...
llvm-svn: 86218
2009-11-06 02:50:19 +00:00
Mike Stump
72431bd9ea
Refine the vcall for a function that is defined in a virtual base
...
class that is overridden in a base that isn't morally virtual.
llvm-svn: 86217
2009-11-06 02:38:24 +00:00
Douglas Gregor
ad8b22269e
If we have a C-style cast, functional cast, or a static_cast to a
...
class type, don't perform the array-to-pointer or function-to-pointer
conversions, because we may end up binding a reference to a function
or array.
With this change, FileCheck now passes -fsyntax-only!
llvm-svn: 86211
2009-11-06 01:14:41 +00:00
Douglas Gregor
02ba0ea461
When we encounter a derived-to-base conversion when performing an
...
implicit conversion sequence, check the validity of this conversion
and then perform it.
llvm-svn: 86210
2009-11-06 01:02:41 +00:00
Mike Stump
aea4b8a0c3
Convert file over to checking the .ll file for codegen. Also, we
...
speed up this file by not doing twice the checking.
llvm-svn: 86205
2009-11-06 00:18:25 +00:00
Douglas Gregor
b2186fe23c
Make sure that EnumConstantDecls always get a type, even when they have type-dependent initializers.
...
llvm-svn: 86197
2009-11-06 00:03:12 +00:00
Chris Lattner
e4a8c64731
clean up integer preprocessor type definitions, patch by Ken Dyck!
...
llvm-svn: 86177
2009-11-05 21:21:32 +00:00
Sebastian Redl
87869bc435
Make ASTContext::getIntWidth return 1 for all boolean type variations, not just for the unqualified, unaliased bool.
...
llvm-svn: 86174
2009-11-05 21:10:57 +00:00
Douglas Gregor
4ebb7f3e4c
Be a little more careful when trying to extract a TypeDecl from a enum/class/struct/union specifier; in invalid code, we may also see ClassTemplateDecls.
...
llvm-svn: 86171
2009-11-05 20:54:04 +00:00
John Thompson
ed4e2950bc
Adding -fshort-wchar option.
...
llvm-svn: 86167
2009-11-05 20:14:16 +00:00
Douglas Gregor
866ad5d8ea
De-FIXME a test
...
llvm-svn: 86166
2009-11-05 20:02:41 +00:00
Sebastian Redl
1060067dd1
Don't allow definitions of array variables without some size information in C++. Fixed PR5401
...
llvm-svn: 86165
2009-11-05 19:47:47 +00:00
Fariborz Jahanian
4127b8ef97
Added support for static variables which require
...
initialization before main. Fixes pr5396.
llvm-svn: 86145
2009-11-05 18:03:03 +00:00
Douglas Gregor
13a2c03801
Eliminate some false positives due to a thinko in the "'blah' is
...
always zero in this context" warning logic. Also, make the diagnostic
itself more precise when referring to pointer values ("NULL" vs. "zero").
llvm-svn: 86143
2009-11-05 17:49:26 +00:00
Sebastian Redl
65ae200a13
When collecting types for built-in candidates, make arrays decay to pointers. Otherwise, subscripting an array leads to no candidates at all. Fixes PR5360.
...
llvm-svn: 86140
2009-11-05 16:36:20 +00:00
Daniel Dunbar
d3f630f4d5
Add clang_site_config user variable, so that extra tests (e.g., utils/C++Syntax)
...
can always find the main clang site config (when invoked via CMake/Makefiles, at
least).
llvm-svn: 86139
2009-11-05 16:36:19 +00:00
Sebastian Redl
2dfdb820ca
Allow the element type of arrays to be incomplete in C++.
...
This fixes PR5048. Also fix a bug where zero-sized arrays weren't warned about when the size was unsigned.
llvm-svn: 86136
2009-11-05 15:52:31 +00:00
Daniel Dunbar
2fd33fe701
Don't run anything other than the compiler in these tests.
...
llvm-svn: 86134
2009-11-05 15:28:24 +00:00
Douglas Gregor
3ec1bf240d
Fixed two places where we needed to force completion of a type
...
(without complaining if it fails) to get proper semantics: reference
binding with a derived-to-base conversion and the enumeration of
constructors for user-defined conversions. There are probably more
cases to fix, but my prior attempt at statically ensuring that
complete-type checking always happens failed. Perhaps I'll try again.
With this change, Clang can parse include/llvm/*.h!
llvm-svn: 86129
2009-11-05 13:06:35 +00:00
John McCall
1fa36b7cab
Implement the conditional-operator part of -Wsign-compare. Turn
...
DiagnoseSignCompare into Sema::CheckSignCompare and call it from more places.
Add some enumerator tests. These seem to expose some oddities in the
types we're converting C++ enumerators to; in particular, they're converting
to unsigned before int, which seems to contradict 4.5 [conv.prom] p2.
Note to self: stop baiting Doug in my commit messages.
llvm-svn: 86128
2009-11-05 09:23:39 +00:00
Ted Kremenek
c92ff053e9
Tweak wording and classifications of analyzer diagnostics.
...
llvm-svn: 86127
2009-11-05 08:30:12 +00:00
Daniel Dunbar
377eb21801
Add EXTRA_TESTDIRS variable for specifying additional test directories.
...
llvm-svn: 86122
2009-11-05 06:55:24 +00:00
Mike Stump
b8da7a046d
Refine covariant return value adjustments for thunks when null
...
pointers are returned.
llvm-svn: 86120
2009-11-05 06:12:26 +00:00
Mike Stump
098da869a7
Testcase for a recent checkin.
...
llvm-svn: 86118
2009-11-05 05:26:28 +00:00
Mike Stump
abcffc3b59
Update.
...
llvm-svn: 86117
2009-11-05 05:01:19 +00:00
Mike Stump
5ff76e2fa2
Fix 80-col violation.
...
llvm-svn: 86115
2009-11-05 03:47:55 +00:00
Daniel Dunbar
aef52f4c83
Remove clang-cc -html-diags option, this doesn't fit in well and we get plenty
...
of coverage of this from the analyzer.
If this bothers you, I can add it back in a mode where non-source diagnostics go
to stderr and only source diagnostics use -html-diags, but I don't think anyone
uses this.
llvm-svn: 86109
2009-11-05 02:11:37 +00:00
Douglas Gregor
5287f091b2
When instantiating a UnaryOperator, allow the resulting expression to
...
still be dependent or invoke an overloaded operator. Previously, we
only supported builtin operators.
BinaryOperator/CompoundAssignOperator didn't have this issue because
we always built a CXXOperatorCallExpr node, even when name lookup
didn't find any functions to save until instantiation time. Now, that
code builds a BinaryOperator or CompoundAssignOperator rather than a
CXXOperatorCallExpr, to save some space.
llvm-svn: 86087
2009-11-05 00:51:44 +00:00
John McCall
644a4181c9
Implement -Wsign-compare, or at least the actual comparison part of it.
...
Conditional operands are next.
Fixes part of rdar://problem/7289584.
llvm-svn: 86083
2009-11-05 00:40:04 +00:00
Douglas Gregor
01df946664
Make sure to grab CVR qualifiers from the canonical type. ARGH!
...
llvm-svn: 86079
2009-11-05 00:07:36 +00:00
Douglas Gregor
b184f0d32e
When instantiating a MemberExpr, be sure to instantiate the
...
explicitly-specified template arguments, too!
llvm-svn: 86066
2009-11-04 23:20:05 +00:00
Chris Lattner
b0966de585
A simple reordering of the definitions in stdint.h and
...
introduces no new function changes. Patch by Ken Dyck!
llvm-svn: 86062
2009-11-04 23:03:18 +00:00
John McCall
e22a04aba9
Diagnose using a field to initialize itself. Patch by Brandon Pearcy!
...
llvm-svn: 86061
2009-11-04 23:02:40 +00:00
Douglas Gregor
41127188ac
When starting a C++ member access expression, make sure to compute the
...
type of the object even when it is dependent. Specifically, this makes
sure that we get the right type for "this->", which is important when
performing name lookup into this scope to determine whether an
identifier or operator-function-id is a template name.
llvm-svn: 86060
2009-11-04 22:49:18 +00:00
John Thompson
f174268a1f
Fixed for running on Windows.
...
llvm-svn: 86053
2009-11-04 21:52:17 +00:00
Douglas Gregor
4d0c38ad95
Fix a little canonical-types issue with non-type template arguments.
...
Fixes PR5349.
llvm-svn: 86052
2009-11-04 21:50:46 +00:00
Fariborz Jahanian
18bc195473
Add code gen for pointer-to-member function in
...
ctor's initializer. Fixes pr5178.
llvm-svn: 86040
2009-11-04 19:13:37 +00:00
Douglas Gregor
3552259059
Properly replace (cxxscope, template-id) annotation tokens with a
...
single typename annotation token when backtracing. Fixes PR5350.
llvm-svn: 86034
2009-11-04 18:18:19 +00:00
Fariborz Jahanian
09cc10f9f8
This patch extends CleanupScope to support destruction
...
of array objects on block exit. Patch is by Anders Calrsson.
llvm-svn: 86032
2009-11-04 17:57:40 +00:00
Douglas Gregor
2de8f4149e
Don't try to check the initialization of fields with dependent
...
types. Fixes PR5352.
Fariborz, please review.
llvm-svn: 86031
2009-11-04 17:16:11 +00:00
Douglas Gregor
615ac67fb8
Store the unresolved class type in MemberPointerType's Class field,
...
from Peter Collingbourne!
llvm-svn: 86030
2009-11-04 16:49:01 +00:00
Chris Lattner
b73beb36f5
this test has started failing due to an optimizer change. Clang tests
...
should only look at -O0 IR output not -O3 assembly output. XFAIL it for
now.
llvm-svn: 86029
2009-11-04 16:37:13 +00:00
Douglas Gregor
220f4277bd
Switch parsing of using declarations over to ParseUnqualifiedId.
...
llvm-svn: 86027
2009-11-04 16:30:06 +00:00
Douglas Gregor
c95a1fa7f6
When performing template instantiation (transformation) of
...
expressions, keep track of whether we are immediately taking the
address of the expression. Pass this flag when building a declaration
name expression so that we handle pointer-to-member constants
properly.
llvm-svn: 86017
2009-11-04 07:01:15 +00:00
Ted Kremenek
ef910047b2
Catch uses of undefined values when they are used in assignment, thus catching such bugs closer to the source.
...
llvm-svn: 86003
2009-11-04 04:24:16 +00:00
John McCall
4976fd4ea9
Diagnose the use of 'fastcall' on functions without prototypes or with
...
varargs prototypes.
llvm-svn: 86001
2009-11-04 03:36:09 +00:00
John McCall
9eff4e60ae
Diagnose __builtin_offsetof on incomplete types. Fixes
...
rdar://problem/7222956
llvm-svn: 85999
2009-11-04 03:03:43 +00:00
John McCall
28a6aeab7e
Change our basic strategy for avoiding deprecation warnings when the decl use
...
appears in a deprecated context. In the new strategy, we emit the warnings
as usual unless we're currently parsing a declaration, where "declaration" is
restricted to mean a decl group or a few special cases in Objective C. If
we *are* parsing a declaration, we queue up the deprecation warnings until
the declaration has been completely parsed, and then emit them only if the
decl is not deprecated.
We also standardize the bookkeeping for deprecation so as to avoid special cases.
llvm-svn: 85998
2009-11-04 02:18:39 +00:00
Douglas Gregor
71395fa1d5
Implement support for parsing dependent template-ids that refer to
...
overloaded operators, e.g.,
p->template operator+<T>()
llvm-svn: 85989
2009-11-04 00:56:37 +00:00
Mike Stump
71609a2874
Split out return adjustments in thunks from this adjustment in thunks
...
so the optimizer can tailcall into the return value adjustment thunk.
This improves codesize for complex hierarchies.
llvm-svn: 85988
2009-11-04 00:53:51 +00:00
Mike Stump
6de15a8881
Test case for recent checkin.
...
llvm-svn: 85972
2009-11-03 23:32:42 +00:00
Douglas Gregor
3cf81317e4
Parsing and semantic analysis for template-ids that name overloaded
...
operators, e.g.,
operator+<int>
which now works in declarators, id-expressions, and member access
expressions. This commit only implements the non-dependent case, where
we can resolve the template-id to an actual declaration.
llvm-svn: 85966
2009-11-03 23:16:33 +00:00
Nuno Lopes
f94d35387e
make 'make clean' work on Solaris, per Gabor Greif comment
...
llvm-svn: 85958
2009-11-03 22:39:56 +00:00
Nuno Lopes
6a20b2df3e
make 'make clean' clean everything
...
llvm-svn: 85957
2009-11-03 22:21:28 +00:00
Fariborz Jahanian
7ad3616659
Remove previous patch for pr5296 due to further clarification
...
of value-initialization and trivial constructors.
llvm-svn: 85935
2009-11-03 20:38:53 +00:00
Chris Lattner
e9d7d78ab3
Implement support for the -undef command line option, patch by
...
Roman Divacky! PR5363
llvm-svn: 85932
2009-11-03 19:50:27 +00:00
Douglas Gregor
30d60cb36e
Replace the code that parses member access expressions after "." or
...
"->" with a use of ParseUnqualifiedId. Collapse
ActOnMemberReferenceExpr, ActOnDestructorReferenceExpr (both of them),
ActOnOverloadedOperatorReferenceExpr,
ActOnConversionOperatorReferenceExpr, and
ActOnMemberTemplateIdReferenceExpr into a single, new action
ActOnMemberAccessExpr that does the same thing more cleanly (and can
keep more source-location information).
llvm-svn: 85930
2009-11-03 19:44:04 +00:00
Mike Stump
f6968a5749
vtable testcase for recent work on vcall/vbase offsets.
...
llvm-svn: 85925
2009-11-03 19:28:52 +00:00
John McCall
d5a36321b9
Reorganize the parsing of decl groups / function definitions so that
...
declarators are parsed primarily within a single function (at least for
these cases). Remove some excess diagnostics arising during parse failures.
llvm-svn: 85924
2009-11-03 19:26:08 +00:00
Mike Stump
4627132ebc
Refine codegen for covariant thunks that return references.
...
llvm-svn: 85916
2009-11-03 19:03:17 +00:00