In gcc/objc/: 2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/: 2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. 2005-07-18 Ziemowit Laski <zlaski@apple.com> Radar 4175534 * objc-act.c (objc_compare_types): A new silent comparison mode (-4), differing from regular comparison (-3) in that 'false' is returned instead of issuing warnings. In gcc/testsuite/: 2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. 2005-07-18 Ziemowit Laski <zlaski@apple.com> Radar 4175534 * obj-c++.dg/method-22.mm: New. From-SVN: r164681
This commit is contained in:
parent
06e67e167d
commit
4c11650506
|
@ -1,3 +1,14 @@
|
||||||
|
2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
|
Merge from 'apple/trunk' branch on FSF servers.
|
||||||
|
|
||||||
|
2005-07-18 Ziemowit Laski <zlaski@apple.com>
|
||||||
|
|
||||||
|
Radar 4175534
|
||||||
|
* objc-act.c (objc_compare_types): A new silent comparison
|
||||||
|
mode (-4), differing from regular comparison (-3) in that
|
||||||
|
'false' is returned instead of issuing warnings.
|
||||||
|
|
||||||
2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
|
2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
* objc-act.c (encode_type): Do not add 'r' with the next runtime.
|
* objc-act.c (encode_type): Do not add 'r' with the next runtime.
|
||||||
|
|
|
@ -1143,7 +1143,9 @@ objc_common_type (tree type1, tree type2)
|
||||||
0 Return value;
|
0 Return value;
|
||||||
-1 Assignment;
|
-1 Assignment;
|
||||||
-2 Initialization;
|
-2 Initialization;
|
||||||
-3 Comparison (LTYP and RTYP may match in either direction). */
|
-3 Comparison (LTYP and RTYP may match in either direction);
|
||||||
|
-4 Silent comparison (for C++ overload resolution).
|
||||||
|
*/
|
||||||
|
|
||||||
bool
|
bool
|
||||||
objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee)
|
objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee)
|
||||||
|
@ -1198,8 +1200,9 @@ objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee)
|
||||||
&& !TYPE_HAS_OBJC_INFO (rtyp))
|
&& !TYPE_HAS_OBJC_INFO (rtyp))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Past this point, we are committed to returning 'true' to the caller.
|
/* Past this point, we are committed to returning 'true' to the caller
|
||||||
However, we can still warn about type and/or protocol mismatches. */
|
(unless performing a silent comparison; see below). However, we can
|
||||||
|
still warn about type and/or protocol mismatches. */
|
||||||
|
|
||||||
if (TYPE_HAS_OBJC_INFO (ltyp))
|
if (TYPE_HAS_OBJC_INFO (ltyp))
|
||||||
{
|
{
|
||||||
|
@ -1253,7 +1256,7 @@ objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee)
|
||||||
if (!pointers_compatible)
|
if (!pointers_compatible)
|
||||||
pointers_compatible = DERIVED_FROM_P (ltyp, rtyp);
|
pointers_compatible = DERIVED_FROM_P (ltyp, rtyp);
|
||||||
|
|
||||||
if (!pointers_compatible && argno == -3)
|
if (!pointers_compatible && argno <= -3)
|
||||||
pointers_compatible = DERIVED_FROM_P (rtyp, ltyp);
|
pointers_compatible = DERIVED_FROM_P (rtyp, ltyp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1271,11 +1274,17 @@ objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee)
|
||||||
|
|
||||||
if (!pointers_compatible)
|
if (!pointers_compatible)
|
||||||
{
|
{
|
||||||
|
/* The two pointers are not exactly compatible. Issue a warning, unless
|
||||||
|
we are performing a silent comparison, in which case return 'false'
|
||||||
|
instead. */
|
||||||
/* NB: For the time being, we shall make our warnings look like their
|
/* NB: For the time being, we shall make our warnings look like their
|
||||||
C counterparts. In the future, we may wish to make them more
|
C counterparts. In the future, we may wish to make them more
|
||||||
ObjC-specific. */
|
ObjC-specific. */
|
||||||
switch (argno)
|
switch (argno)
|
||||||
{
|
{
|
||||||
|
case -4:
|
||||||
|
return false;
|
||||||
|
|
||||||
case -3:
|
case -3:
|
||||||
warning (0, "comparison of distinct Objective-C types lacks a cast");
|
warning (0, "comparison of distinct Objective-C types lacks a cast");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
2010-09-28 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
|
Merge from 'apple/trunk' branch on FSF servers.
|
||||||
|
|
||||||
|
2005-07-18 Ziemowit Laski <zlaski@apple.com>
|
||||||
|
|
||||||
|
Radar 4175534
|
||||||
|
* obj-c++.dg/method-22.mm: New.
|
||||||
|
|
||||||
2010-09-27 Jason Merrill <jason@redhat.com>
|
2010-09-27 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* g++.dg/cpp0x/rv-lvalue-req.C: New.
|
* g++.dg/cpp0x/rv-lvalue-req.C: New.
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* Ensure that overload resolution does not produce warnings as
|
||||||
|
side-effects. */
|
||||||
|
/* { dg-do run } */
|
||||||
|
|
||||||
|
#include "../objc-obj-c++-shared/Object1.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define CHECK_IF(E) if(!(E)) abort ()
|
||||||
|
|
||||||
|
@interface MyCursor: Object
|
||||||
|
+ (MyCursor *)crosshairCursor;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@class MyImage;
|
||||||
|
|
||||||
|
class A {
|
||||||
|
public:
|
||||||
|
A();
|
||||||
|
|
||||||
|
int foo(MyImage *);
|
||||||
|
int foo(MyCursor *);
|
||||||
|
};
|
||||||
|
|
||||||
|
A::A() {}
|
||||||
|
int A::foo(MyCursor * c) { return 17; }
|
||||||
|
int A::foo(MyImage * i) { return 29; }
|
||||||
|
|
||||||
|
@implementation MyCursor
|
||||||
|
+ (MyCursor *)crosshairCursor {
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
A a;
|
||||||
|
|
||||||
|
int r = a.foo([MyCursor crosshairCursor]);
|
||||||
|
|
||||||
|
CHECK_IF (r == 17);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue