Author: rjmccall Date: Mon Oct 17 13:09:15 2011 New Revision: 142208 URL: http://llvm.org/viewvc/llvm-project?rev=142208&view=rev Log: Add a new placeholder type to represent "unbridged" casts in ARC.
No semantic analysis yet. Modified: cfe/trunk/include/clang/AST/ASTContext.h cfe/trunk/include/clang/AST/Type.h cfe/trunk/include/clang/Serialization/ASTBitCodes.h cfe/trunk/lib/AST/ASTContext.cpp cfe/trunk/lib/AST/ASTImporter.cpp cfe/trunk/lib/AST/ItaniumMangle.cpp cfe/trunk/lib/AST/MicrosoftMangle.cpp cfe/trunk/lib/AST/Type.cpp cfe/trunk/lib/AST/TypeLoc.cpp cfe/trunk/lib/Analysis/PrintfFormatString.cpp cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/lib/CodeGen/CGRTTI.cpp cfe/trunk/lib/CodeGen/CodeGenTypes.cpp cfe/trunk/lib/Serialization/ASTCommon.cpp cfe/trunk/lib/Serialization/ASTReader.cpp cfe/trunk/tools/libclang/CIndex.cpp cfe/trunk/tools/libclang/CIndexUSRs.cpp Modified: cfe/trunk/include/clang/AST/ASTContext.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/ASTContext.h (original) +++ cfe/trunk/include/clang/AST/ASTContext.h Mon Oct 17 13:09:15 2011 @@ -497,6 +497,7 @@ CanQualType FloatComplexTy, DoubleComplexTy, LongDoubleComplexTy; CanQualType VoidPtrTy, NullPtrTy; CanQualType DependentTy, OverloadTy, BoundMemberTy, UnknownAnyTy; + CanQualType ARCUnbridgedCastTy; CanQualType ObjCBuiltinIdTy, ObjCBuiltinClassTy, ObjCBuiltinSelTy; // Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand. Modified: cfe/trunk/include/clang/AST/Type.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/Type.h (original) +++ cfe/trunk/include/clang/AST/Type.h Mon Oct 17 13:09:15 2011 @@ -1751,7 +1751,12 @@ /// like debuggers that don't know what type to give something. /// Only a small number of operations are valid on expressions of /// unknown type, most notably explicit casts. - UnknownAny + UnknownAny, + + /// The type of a cast which, in ARC, would normally require a + /// __bridge, but which might be okay depending on the immediate + /// context. + ARCUnbridgedCast }; public: Modified: cfe/trunk/include/clang/Serialization/ASTBitCodes.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTBitCodes.h?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/include/clang/Serialization/ASTBitCodes.h (original) +++ cfe/trunk/include/clang/Serialization/ASTBitCodes.h Mon Oct 17 13:09:15 2011 @@ -554,7 +554,9 @@ /// \brief The "auto &&" deduction type. PREDEF_TYPE_AUTO_RREF_DEDUCT = 32, /// \brief The OpenCL 'half' / ARM NEON __fp16 type. - PREDEF_TYPE_HALF_ID = 33 + PREDEF_TYPE_HALF_ID = 33, + /// \brief ARC's unbridged-cast placeholder type. + PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34 }; /// \brief The number of predefined type IDs that are reserved for Modified: cfe/trunk/lib/AST/ASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTContext.cpp (original) +++ cfe/trunk/lib/AST/ASTContext.cpp Mon Oct 17 13:09:15 2011 @@ -464,6 +464,9 @@ // "any" type; useful for debugger-like clients. InitBuiltinType(UnknownAnyTy, BuiltinType::UnknownAny); + // Placeholder type for unbridged ARC casts. + InitBuiltinType(ARCUnbridgedCastTy, BuiltinType::ARCUnbridgedCast); + // C99 6.2.5p11. FloatComplexTy = getComplexType(FloatTy); DoubleComplexTy = getComplexType(DoubleTy); Modified: cfe/trunk/lib/AST/ASTImporter.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTImporter.cpp (original) +++ cfe/trunk/lib/AST/ASTImporter.cpp Mon Oct 17 13:09:15 2011 @@ -1387,6 +1387,8 @@ case BuiltinType::Dependent: return Importer.getToContext().DependentTy; case BuiltinType::UnknownAny: return Importer.getToContext().UnknownAnyTy; case BuiltinType::BoundMember: return Importer.getToContext().BoundMemberTy; + case BuiltinType::ARCUnbridgedCast: + return Importer.getToContext().ARCUnbridgedCastTy; case BuiltinType::ObjCId: // FIXME: Make sure that the "to" context supports Objective-C! Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original) +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Mon Oct 17 13:09:15 2011 @@ -1739,6 +1739,7 @@ case BuiltinType::Dependent: case BuiltinType::BoundMember: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: llvm_unreachable("mangling a placeholder type"); break; case BuiltinType::ObjCId: Out << "11objc_object"; break; Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original) +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Mon Oct 17 13:09:15 2011 @@ -705,6 +705,7 @@ case BuiltinType::Dependent: case BuiltinType::UnknownAny: case BuiltinType::BoundMember: + case BuiltinType::ARCUnbridgedCast: llvm_unreachable( "Overloaded and dependent types shouldn't get to name mangling"); case BuiltinType::ObjCId: Out << "PAUobjc_object@@"; break; Modified: cfe/trunk/lib/AST/Type.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Type.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/Type.cpp (original) +++ cfe/trunk/lib/AST/Type.cpp Mon Oct 17 13:09:15 2011 @@ -1495,6 +1495,7 @@ case BoundMember: return "<bound member function type>"; case Dependent: return "<dependent type>"; case UnknownAny: return "<unknown type>"; + case ARCUnbridgedCast: return "<ARC unbridged cast type>"; case ObjCId: return "id"; case ObjCClass: return "Class"; case ObjCSel: return "SEL"; Modified: cfe/trunk/lib/AST/TypeLoc.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TypeLoc.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/AST/TypeLoc.cpp (original) +++ cfe/trunk/lib/AST/TypeLoc.cpp Mon Oct 17 13:09:15 2011 @@ -237,6 +237,7 @@ case BuiltinType::Dependent: case BuiltinType::BoundMember: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: case BuiltinType::ObjCId: case BuiltinType::ObjCClass: case BuiltinType::ObjCSel: Modified: cfe/trunk/lib/Analysis/PrintfFormatString.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PrintfFormatString.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/Analysis/PrintfFormatString.cpp (original) +++ cfe/trunk/lib/Analysis/PrintfFormatString.cpp Mon Oct 17 13:09:15 2011 @@ -400,6 +400,7 @@ case BuiltinType::Overload: case BuiltinType::BoundMember: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: // Misc other stuff which doesn't make sense here. return false; Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Oct 17 13:09:15 2011 @@ -329,6 +329,8 @@ llvm_unreachable("Unexpected builtin type BoundMember"); case BuiltinType::UnknownAny: llvm_unreachable("Unexpected builtin type UnknownAny"); + case BuiltinType::ARCUnbridgedCast: + llvm_unreachable("Unexpected builtin type ARCUnbridgedCast"); case BuiltinType::NullPtr: return DBuilder. createNullPtrType(BT->getName(CGM.getContext().getLangOptions())); Modified: cfe/trunk/lib/CodeGen/CGRTTI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGRTTI.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGRTTI.cpp (original) +++ cfe/trunk/lib/CodeGen/CGRTTI.cpp Mon Oct 17 13:09:15 2011 @@ -199,6 +199,7 @@ case BuiltinType::Dependent: case BuiltinType::BoundMember: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: llvm_unreachable("asking for RRTI for a placeholder type!"); case BuiltinType::ObjCId: Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypes.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CodeGenTypes.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenTypes.cpp Mon Oct 17 13:09:15 2011 @@ -372,6 +372,7 @@ case BuiltinType::Dependent: case BuiltinType::BoundMember: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: llvm_unreachable("Unexpected placeholder builtin type!"); break; } Modified: cfe/trunk/lib/Serialization/ASTCommon.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTCommon.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTCommon.cpp (original) +++ cfe/trunk/lib/Serialization/ASTCommon.cpp Mon Oct 17 13:09:15 2011 @@ -54,6 +54,8 @@ case BuiltinType::BoundMember:ID = PREDEF_TYPE_BOUND_MEMBER; break; case BuiltinType::Dependent: ID = PREDEF_TYPE_DEPENDENT_ID; break; case BuiltinType::UnknownAny: ID = PREDEF_TYPE_UNKNOWN_ANY; break; + case BuiltinType::ARCUnbridgedCast: + ID = PREDEF_TYPE_ARC_UNBRIDGED_CAST; break; case BuiltinType::ObjCId: ID = PREDEF_TYPE_OBJC_ID; break; case BuiltinType::ObjCClass: ID = PREDEF_TYPE_OBJC_CLASS; break; case BuiltinType::ObjCSel: ID = PREDEF_TYPE_OBJC_SEL; break; Modified: cfe/trunk/lib/Serialization/ASTReader.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReader.cpp Mon Oct 17 13:09:15 2011 @@ -3839,6 +3839,11 @@ case PREDEF_TYPE_AUTO_RREF_DEDUCT: T = Context.getAutoRRefDeductType(); break; + + case PREDEF_TYPE_ARC_UNBRIDGED_CAST: + T = Context.ARCUnbridgedCastTy; + break; + } assert(!T.isNull() && "Unknown predefined type"); Modified: cfe/trunk/tools/libclang/CIndex.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/tools/libclang/CIndex.cpp (original) +++ cfe/trunk/tools/libclang/CIndex.cpp Mon Oct 17 13:09:15 2011 @@ -1368,6 +1368,7 @@ case BuiltinType::BoundMember: case BuiltinType::Dependent: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: break; case BuiltinType::ObjCId: Modified: cfe/trunk/tools/libclang/CIndexUSRs.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndexUSRs.cpp?rev=142208&r1=142207&r2=142208&view=diff ============================================================================== --- cfe/trunk/tools/libclang/CIndexUSRs.cpp (original) +++ cfe/trunk/tools/libclang/CIndexUSRs.cpp Mon Oct 17 13:09:15 2011 @@ -584,6 +584,7 @@ case BuiltinType::BoundMember: case BuiltinType::Dependent: case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: IgnoreResults = true; return; case BuiltinType::ObjCId: _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits