r174930 - Perform placeholder conversions on the controller of a _Generic
John McCall
rjmccall at apple.com
Mon Feb 11 18:08:13 PST 2013
Author: rjmccall
Date: Mon Feb 11 20:08:12 2013
New Revision: 174930
URL: http://llvm.org/viewvc/llvm-project?rev=174930&view=rev
Log:
Perform placeholder conversions on the controller of a _Generic
expression.
Added:
cfe/trunk/test/SemaObjC/generic-selection.m
Modified:
cfe/trunk/lib/Sema/SemaExpr.cpp
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=174930&r1=174929&r2=174930&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Feb 11 20:08:12 2013
@@ -1173,6 +1173,12 @@ Sema::CreateGenericSelectionExpr(SourceL
TypeSourceInfo **Types,
Expr **Exprs,
unsigned NumAssocs) {
+ if (ControllingExpr->getType()->isPlaceholderType()) {
+ ExprResult result = CheckPlaceholderExpr(ControllingExpr);
+ if (result.isInvalid()) return ExprError();
+ ControllingExpr = result.take();
+ }
+
bool TypeErrorFound = false,
IsResultDependent = ControllingExpr->isTypeDependent(),
ContainsUnexpandedParameterPack
Added: cfe/trunk/test/SemaObjC/generic-selection.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/generic-selection.m?rev=174930&view=auto
==============================================================================
--- cfe/trunk/test/SemaObjC/generic-selection.m (added)
+++ cfe/trunk/test/SemaObjC/generic-selection.m Mon Feb 11 20:08:12 2013
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// expected-no-diagnostics
+
+__attribute__((objc_root_class))
+ at interface Root {
+ Class isa;
+}
+ at end
+
+ at interface A
+ at property (strong) id x;
+ at end
+
+// rdar://13193560
+void test0(A *a) {
+ int kind = _Generic(a.x, id : 0, int : 1, float : 2);
+}
More information about the cfe-commits
mailing list