[cfe-commits] r113124 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/SemaCXX/unary-real-imag.cpp

Eli Friedman eli.friedman at gmail.com
Sun Sep 5 16:15:52 PDT 2010


Author: efriedma
Date: Sun Sep  5 18:15:52 2010
New Revision: 113124

URL: http://llvm.org/viewvc/llvm-project?rev=113124&view=rev
Log:
PR8023: Don't crash on invalid uses of __real__ on class types in C++.


Added:
    cfe/trunk/test/SemaCXX/unary-real-imag.cpp
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=113124&r1=113123&r2=113124&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Sun Sep  5 18:15:52 2010
@@ -6796,7 +6796,7 @@
                               UnaryOperatorKind Opc,
                               Expr *Input) {
   if (getLangOptions().CPlusPlus && Input->getType()->isOverloadableType() &&
-      Opc != UO_Extension) {
+      UnaryOperator::getOverloadedOperator(Opc) != OO_None) {
     // Find all of the overloaded operators visible from this
     // point. We perform both an operator-name lookup from the local
     // scope and an argument-dependent lookup based on the types of

Added: cfe/trunk/test/SemaCXX/unary-real-imag.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/unary-real-imag.cpp?rev=113124&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/unary-real-imag.cpp (added)
+++ cfe/trunk/test/SemaCXX/unary-real-imag.cpp Sun Sep  5 18:15:52 2010
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+struct A {};
+int i = __real__ A(); // expected-error {{invalid type 'A' to __real operator}}
+int j = __imag__ A(); // expected-error {{invalid type 'A' to __imag operator}}
+





More information about the cfe-commits mailing list