diff --git a/hpvm/include/SupportVISC/VISCUtils.h b/hpvm/include/SupportVISC/VISCUtils.h
index 9625846c399271992501d18b8f95320e0de467e0..f2c0d0d276b02bacca208de2b6e44d5bca688731 100644
--- a/hpvm/include/SupportVISC/VISCUtils.h
+++ b/hpvm/include/SupportVISC/VISCUtils.h
@@ -539,24 +539,26 @@ visc::Target getPreferredTarget(Function* F) {
   DEBUG(errs() << "Finding preferred target for " << F->getName() << "\n");
   Module* M = F->getParent();
   
-  auto PrefTarget = [=](StringRef Name) {
+  auto FoundPrefTarget = [=](StringRef Name) {
     	NamedMDNode* HintNode = M->getOrInsertNamedMetadata(Name);
   	for(unsigned i = 0; i < HintNode->getNumOperands(); i++) {
     	  MDNode* N = HintNode->getOperand(i);
     	  Value* FHint = dyn_cast<ValueAsMetadata>(N->getOperand(0).get())->getValue();
     	  if(F == FHint)
       	    return true;
-  	}	
+  	}
+        return false;	
   };
-
-  if(PrefTarget("visc_hint_gpu")) return visc::GPU_TARGET;
-  if(PrefTarget("visc_hint_spir")) return visc::SPIR_TARGET;
-  if(PrefTarget("visc_hint_cudnn")) return visc::CUDNN_TARGET;
-  if(PrefTarget("visc_hint_promise")) return visc::PROMISE_TARGET;
-  if(PrefTarget("visc_hint_cpu_gpu")) return visc::CPU_OR_GPU_TARGET;
-  if(PrefTarget("visc_hint_cpu_spir")) return visc::CPU_OR_SPIR_TARGET;
-
-  return visc::CPU_TARGET;
+  
+  if(FoundPrefTarget("visc_hint_cpu")) return visc::CPU_TARGET;
+  if(FoundPrefTarget("visc_hint_gpu")) return visc::GPU_TARGET;
+  if(FoundPrefTarget("visc_hint_spir")) return visc::SPIR_TARGET;
+  if(FoundPrefTarget("visc_hint_cudnn")) return visc::CUDNN_TARGET;
+  if(FoundPrefTarget("visc_hint_promise")) return visc::PROMISE_TARGET;
+  if(FoundPrefTarget("visc_hint_cpu_gpu")) return visc::CPU_OR_GPU_TARGET;
+  if(FoundPrefTarget("visc_hint_cpu_spir")) return visc::CPU_OR_SPIR_TARGET;
+
+  return visc::None;
 }