Chandler Carruth
64d376a8fa
Switch all local code and comments from '[Ii]nstantiat(ion|ed)' to
...
'[Ee]xpan(sion|ded)' in the TextDiagnosticPrinter.
No functionality changed.
llvm-svn: 135136
2011-07-14 08:20:31 +00:00
Chandler Carruth
cd7a02ec1b
Switch the diagnostic messages about macros to use the terms 'expanded'
...
and 'expansions' rather than 'instantiated' and 'contexts'.
This is the first of several patches migrating Clang's terminology
surrounding macros from 'instantiation' to 'expansion'.
llvm-svn: 135135
2011-07-14 08:20:28 +00:00
Ted Kremenek
ba84cf53bc
Reapply r135075, but modify format-strings.c and format-strings-fixit.c test cases to be more portable with an explicit target triple.
...
llvm-svn: 135134
2011-07-14 06:49:52 +00:00
NAKAMURA Takumi
91d831bc2d
Revert r135075, "format string checking: long and int have the same widths on 32-bit, so we shouldn't warn about using"
...
It fails on freebsd, mingw and msvc10.
llvm-svn: 135129
2011-07-14 05:16:18 +00:00
Douglas Gregor
5cf0e1534a
Add a hackaround to avoid the crash in PR10355. However, our recovery
...
is still terrible here because typo correction is not behaving well in
the presence of overloaded functions.
llvm-svn: 135128
2011-07-14 04:54:23 +00:00
Argyrios Kyrtzidis
e2e40b4dc7
[arcmt] Make sure migrating to ARC works even if '-fobjc-arc' is included in command-line flags. rdar://9567824
...
llvm-svn: 135115
2011-07-14 00:17:54 +00:00
John McCall
7c3ed3d0c5
Document the behavior of property modifiers in ARC.
...
rdar://problem/9768338
llvm-svn: 135104
2011-07-13 23:15:32 +00:00
Richard Smith
48d2464c3f
PR8800: When building a conversion to A& using a member operatorA&(), do not require A to be a complete type.
...
llvm-svn: 135101
2011-07-13 22:53:21 +00:00
Bruno Cardoso Lopes
98154a76fd
Reapply r134946 with fixes. Tested on Benjamin testcase and other test-suite failures.
...
llvm-svn: 135091
2011-07-13 21:58:55 +00:00
Douglas Gregor
ad69e65a39
Add 'mutable' to the function declarator chunk, to be used when
...
parsing lambda expressions, from John Freeman!
llvm-svn: 135090
2011-07-13 21:47:47 +00:00
Douglas Gregor
385cfc073e
Fix an incorrect namespace typo-correction diagnostic, from Kaelyn
...
Uhrain! Fixes PR10318.
llvm-svn: 135086
2011-07-13 21:36:26 +00:00
Devang Patel
f0335ce632
Emit debug info for extended vectors.
...
llvm-svn: 135083
2011-07-13 21:23:30 +00:00
Ted Kremenek
60654d697a
format string checking: long and int have the same widths on 32-bit, so we shouldn't warn about using
...
an "int" format specifier with a "long" type in 32-bit.
llvm-svn: 135075
2011-07-13 20:20:58 +00:00
John McCall
928a25714e
Enforce access control for the destructor in a new[] expression and mark
...
it as used. Otherwise, we can fail to instantiate or validate the destructor,
which can lead to crashes in IR gen like PR10351.
llvm-svn: 135073
2011-07-13 20:12:57 +00:00
Argyrios Kyrtzidis
de223c3a7b
[arcmt] Add weak/unsafe_unretained for "@property (readonly)" when we are @synthesizing it.
...
llvm-svn: 135067
2011-07-13 19:47:57 +00:00
Argyrios Kyrtzidis
c8b3619773
[arcmt] For properties rewrite 'assign' -> 'weak or unsafe_unretained', 'retain' -> 'strong', and add
...
'weak or unsafe_unretained' when 'assign' is missing. rdar://9496219&9602589.
llvm-svn: 135065
2011-07-13 19:22:00 +00:00
Fariborz Jahanian
9a881019a5
With -Wselector, don't warn about unimplemented optional method
...
used in @selector expression because, well, their implementation
is optional. // rdar://9545564
llvm-svn: 135057
2011-07-13 19:05:43 +00:00
John McCall
dffafded6c
Don't crash if defining -dealloc in a category.
...
llvm-svn: 135054
2011-07-13 18:26:47 +00:00
John McCall
3f4138c5d0
In debugger mode, make ObjC message sends to unknown selectors return
...
__unknown_anytype, and rewrite such message sends correctly.
I had to bite the bullet and actually add a debugger support mode for this
one, which is a bit unfortunate, but there really isn't anything else
I could imagine doing; this is clearly just debugger-specific behavior.
llvm-svn: 135051
2011-07-13 17:56:40 +00:00
Fariborz Jahanian
17585e7940
objc++: Some level of covariance is allowed in ObjC properties.
...
Make it also available in ObjC++ propeties. Use common code for
objc and objc++ so they don't diverge. // rdar://9740328
llvm-svn: 135050
2011-07-13 17:55:01 +00:00
Ted Kremenek
cc47e0fad1
Re-relax conversion specifier checking for printf format strings and conversion specifiers. My recent change was a mistake.
...
llvm-svn: 135048
2011-07-13 17:35:14 +00:00
Ted Kremenek
1d3fb8af68
Fix inversion in argument type checking for format strings with conversion specifiers for character types.
...
llvm-svn: 135046
2011-07-13 17:25:47 +00:00
John McCall
97eab0a271
Okay, that rule about zero-length arrays applies to destroying
...
them, too.
llvm-svn: 135038
2011-07-13 08:09:46 +00:00
John McCall
6549b31fe9
Arrays are permitted to be zero-length in some situations.
...
llvm-svn: 135036
2011-07-13 07:37:11 +00:00
John McCall
c368838b20
Make the integer-range analysis recognize ^= correctly,
...
and (while I'm at it) teach it to grok the results of simple
assignments.
The first is PR10336.
llvm-svn: 135034
2011-07-13 06:35:24 +00:00
John McCall
f677a8e99e
Convert the standard default-construction loops to use phis and
...
partial destruction.
llvm-svn: 135033
2011-07-13 06:10:41 +00:00
Chris Lattner
46ca3272e4
per john's advice, speculatively lower uses of forward-declared enums to
...
i32. They almost always end up this way in the end anyway, and if we get
lucky, this avoids generating some bitcasts.
llvm-svn: 135032
2011-07-13 05:31:19 +00:00
Chris Lattner
3517f14219
PR10337 reminds me that calls return values, lets handle them just
...
like arguments. Thanks PR10337! :)
llvm-svn: 135030
2011-07-13 03:59:32 +00:00
John McCall
f47c069162
Aggressive dead code elimination.
...
llvm-svn: 135029
2011-07-13 03:03:51 +00:00
John McCall
98de3d74d2
Generalize the routine for destroying an object with static
...
storage duration, then explicitly exempt ownership-qualified
types from it.
llvm-svn: 135028
2011-07-13 03:01:35 +00:00
Douglas Gregor
d29fde248e
Eliminate an incomplete/incorrect attempt to provide support for C++0x
...
unrestricted unions, which ended up attempting to initialize objects
in a union (which CodeGen isn't prepared for). Fixes PR9683.
llvm-svn: 135027
2011-07-13 02:14:02 +00:00
Eli Friedman
609ada27ce
Silliness with commas, as reported at http://blog.regehr.org/archives/558 . As it turns out, this is my fault for not noticing this was an issue when I was looking at this a long time ago. :(
...
llvm-svn: 135026
2011-07-13 02:05:57 +00:00
John McCall
ca2c56f20b
Switch delete[] IR-generation over to the destroy framework,
...
which implicitly makes it EH-safe as well.
llvm-svn: 135025
2011-07-13 01:41:37 +00:00
Douglas Gregor
1c2e20d73d
When compiling ::delete for a class with a virtual destructor, call
...
the complete destructor and then invoke the global delete
operator. Previously, we would invoke the deleting destructor, which
calls the wrong delete operator. Fixes PR10341.
llvm-svn: 135021
2011-07-13 00:54:47 +00:00
Richard Smith
26935e60b6
Correctly set up the list of virtual base classes for a CXXRecordDecl. Previously we got the source range wrong for everything in the virtual bases list.
...
llvm-svn: 135011
2011-07-12 23:49:11 +00:00
Fariborz Jahanian
c87c8799ec
revert fix for // rdar://9740328
...
llvm-svn: 135010
2011-07-12 23:20:13 +00:00
Bruno Cardoso Lopes
0aadf83f80
Revert r134946
...
llvm-svn: 135004
2011-07-12 22:30:58 +00:00
Argyrios Kyrtzidis
a200973ead
[arcmt] Also avoid 'weak' for forward references to objc classes.
...
llvm-svn: 135003
2011-07-12 22:16:25 +00:00
Argyrios Kyrtzidis
ce9b739999
[arcmt] Before applying '__weak' check whether the objc class is annotated with objc_arc_weak_reference_unavailable
...
or is in a list of classes not supporting 'weak'.
rdar://9489367.
llvm-svn: 135002
2011-07-12 22:05:17 +00:00
Fariborz Jahanian
c0f6af2103
objc++: Some level of covariance is allowed in ObjC properties.
...
Make it also available in ObjC++ propeties. // rdar://9740328
llvm-svn: 135001
2011-07-12 22:05:16 +00:00
David Chisnall
c2800aab7b
Fix another typo (int -> id for captured_obj).
...
llvm-svn: 134998
2011-07-12 20:34:06 +00:00
John McCall
30317fda63
Generalize Cleanup::Emit's "isForEH" parameter into a set
...
of flags. No functionality change.
llvm-svn: 134997
2011-07-12 20:27:29 +00:00
Peter Collingbourne
77b0e7f296
Implement -MG. Fixes PR9613
...
llvm-svn: 134996
2011-07-12 19:35:15 +00:00
Benjamin Kramer
ae2d344384
Add more compiler workarounds. Should fix the build with old GCCs and MSVC.
...
llvm-svn: 134995
2011-07-12 18:37:23 +00:00
Douglas Gregor
7e6bfb4a0d
In ARC mode, consider Objective-C lifetime types (object pointers and
...
block pointers) that don't have any qualification to be POD types. We
were previously considering them to be non-POD types, because this was
convenient in C++ for is_pod-like traits. However, we now end up
inferring lifetime in such cases (template arguments infer __strong),
so it is not necessary.
Moreover, we want rvalues of object type (which have their lifetime
stripped) to be PODs to allow, e.g., va_arg(arglist, id) to function
properly. Fixes <rdar://problem/9758798>.
llvm-svn: 134993
2011-07-12 17:28:52 +00:00
Fariborz Jahanian
7f4427fc60
Fix a bug where a local variable named 'self' is causing
...
implicit ivar accesses to go through the 'self' variable
rather than the real 'self' for the method. // rdar://9730771
llvm-svn: 134992
2011-07-12 17:16:56 +00:00
John McCall
5fa8e20878
Ugh, use this compiler workaround again.
...
llvm-svn: 134989
2011-07-12 16:53:04 +00:00
John McCall
4bd0fb1f09
Switch field destruction over to use the new destroyer-based API
...
and kill a lot of redundant code.
llvm-svn: 134988
2011-07-12 16:41:08 +00:00
Douglas Gregor
2207ec273a
Improve name mangling for instantiation-dependent types that are not
...
dependent. This covers an odd class of types such as
int (&)[sizeof(sizeof(T() + T()))];
which involve template parameters but, because of some trick typically
involving a form of expression that is never type-dependent, resolve
down to a non-dependent type. Such types need to be mangled
essentially as they were written in the source code (involving
template parameters), rather than via their canonical type.
In general, instantiation-dependent types should be mangled as
they were written in the source. However, since we can't do that now
without non-trivial refactoring of the AST (see the new FIXME), I've
gone for this partial solution: only use the as-written-in-the-source
mangling for these strange types that are instantiation-dependent but
not dependent. This provides better compatibility with previous
incarnations of Clang and with GCC. In the future, we'd like to get
this right.
Fixes <rdar://problem/9663282>.
llvm-svn: 134984
2011-07-12 15:18:55 +00:00
Benjamin Kramer
a4fb836f06
Pop block scope after reading from it.
...
Found by valgrind.
llvm-svn: 134983
2011-07-12 14:11:05 +00:00