Fix build failure with gcc about mixing enum and non-enum
authorYaxun Liu <Yaxun.Liu@amd.com>
Sat, 8 Jul 2017 19:13:41 +0000 (19:13 +0000)
committerYaxun Liu <Yaxun.Liu@amd.com>
Sat, 8 Jul 2017 19:13:41 +0000 (19:13 +0000)
llvm-svn: 307483

clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/TargetInfo.cpp

index 3a30ddc..4b15b8a 100644 (file)
@@ -2432,7 +2432,8 @@ CodeGenModule::GetOrCreateLLVMGlobal(StringRef MangledName,
 
   auto ExpectedAS =
       D ? D->getType().getAddressSpace()
-        : (LangOpts.OpenCL ? LangAS::opencl_global : LangAS::Default);
+        : static_cast<unsigned>(LangOpts.OpenCL ? LangAS::opencl_global
+                                                : LangAS::Default);
   assert(getContext().getTargetAddressSpace(ExpectedAS) ==
          Ty->getPointerAddressSpace());
   if (AddrSpace != ExpectedAS)
@@ -2574,7 +2575,8 @@ CharUnits CodeGenModule::GetTargetTypeStoreSize(llvm::Type *Ty) const {
 unsigned CodeGenModule::GetGlobalVarAddressSpace(const VarDecl *D) {
   unsigned AddrSpace;
   if (LangOpts.OpenCL) {
-    AddrSpace = D ? D->getType().getAddressSpace() : LangAS::opencl_global;
+    AddrSpace = D ? D->getType().getAddressSpace()
+                  : static_cast<unsigned>(LangAS::opencl_global);
     assert(AddrSpace == LangAS::opencl_global ||
            AddrSpace == LangAS::opencl_constant ||
            AddrSpace == LangAS::opencl_local ||
index faec994..eeebd60 100644 (file)
@@ -421,7 +421,8 @@ unsigned TargetCodeGenInfo::getGlobalVarAddressSpace(CodeGenModule &CGM,
   assert(!CGM.getLangOpts().OpenCL &&
          !(CGM.getLangOpts().CUDA && CGM.getLangOpts().CUDAIsDevice) &&
          "Address space agnostic languages only");
-  return D ? D->getType().getAddressSpace() : LangAS::Default;
+  return D ? D->getType().getAddressSpace()
+           : static_cast<unsigned>(LangAS::Default);
 }
 
 llvm::Value *TargetCodeGenInfo::performAddrSpaceCast(