]> granicus.if.org Git - clang/commitdiff
Use early exits to reduce indentation.
authorEric Christopher <echristo@gmail.com>
Tue, 27 Oct 2015 00:06:21 +0000 (00:06 +0000)
committerEric Christopher <echristo@gmail.com>
Tue, 27 Oct 2015 00:06:21 +0000 (00:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251371 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGBuiltin.cpp

index f9ee711b90ae1b759e8f10186159afe2db503a7c..c3fd54e7b225153e4826c4302b31112f3e6e74d4 100644 (file)
@@ -296,53 +296,55 @@ bool CodeGenFunction::checkBuiltinTargetFeatures(
   if (!TargetDecl)
     return true;
 
-  // Get the current enclosing function if it exists.
-  if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(CurFuncDecl)) {
-    unsigned BuiltinID = TargetDecl->getBuiltinID();
-    const char *FeatureList =
-        CGM.getContext().BuiltinInfo.getRequiredFeatures(BuiltinID);
-    if (FeatureList && StringRef(FeatureList) != "") {
-      StringRef TargetCPU = Target.getTargetOpts().CPU;
-      llvm::StringMap<bool> FeatureMap;
-
-      if (const auto *TD = FD->getAttr<TargetAttr>()) {
-        // If we have a TargetAttr build up the feature map based on that.
-        TargetAttr::ParsedTargetAttr ParsedAttr = TD->parse();
-
-        // Make a copy of the features as passed on the command line into the
-        // beginning of the additional features from the function to override.
-        ParsedAttr.first.insert(
-            ParsedAttr.first.begin(),
-            Target.getTargetOpts().FeaturesAsWritten.begin(),
-            Target.getTargetOpts().FeaturesAsWritten.end());
-
-        if (ParsedAttr.second != "")
-          TargetCPU = ParsedAttr.second;
-
-        // Now populate the feature map, first with the TargetCPU which is
-        // either
-        // the default or a new one from the target attribute string. Then we'll
-        // use the passed in features (FeaturesAsWritten) along with the new
-        // ones
-        // from the attribute.
-        Target.initFeatureMap(FeatureMap, CGM.getDiags(), TargetCPU,
-                              ParsedAttr.first);
-      } else {
-        Target.initFeatureMap(FeatureMap, CGM.getDiags(), TargetCPU,
-                              Target.getTargetOpts().Features);
-      }
+  // Get the current enclosing function if it exists. If it doesn't
+  // we can't check the target features anyhow.
+  const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(CurFuncDecl);
+  if (!FD) return true;
 
-      // If we have at least one of the features in the feature list return
-      // true, otherwise return false.
-      SmallVector<StringRef, 1> AttrFeatures;
-      StringRef(FeatureList).split(AttrFeatures, ",");
-      for (const auto &Feature : AttrFeatures)
-        if (FeatureMap[Feature])
-         return true;
-      return false;
-    }
-  }
-  return true;
+  unsigned BuiltinID = TargetDecl->getBuiltinID();
+  const char *FeatureList =
+      CGM.getContext().BuiltinInfo.getRequiredFeatures(BuiltinID);
+
+  if (!FeatureList || StringRef(FeatureList) == "")
+    return true;
+
+  StringRef TargetCPU = Target.getTargetOpts().CPU;
+  llvm::StringMap<bool> FeatureMap;
+
+  if (const auto *TD = FD->getAttr<TargetAttr>()) {
+    // If we have a TargetAttr build up the feature map based on that.
+    TargetAttr::ParsedTargetAttr ParsedAttr = TD->parse();
+
+    // Make a copy of the features as passed on the command line into the
+    // beginning of the additional features from the function to override.
+    ParsedAttr.first.insert(ParsedAttr.first.begin(),
+                            Target.getTargetOpts().FeaturesAsWritten.begin(),
+                            Target.getTargetOpts().FeaturesAsWritten.end());
+
+    if (ParsedAttr.second != "")
+      TargetCPU = ParsedAttr.second;
+
+    // Now populate the feature map, first with the TargetCPU which is
+    // either
+    // the default or a new one from the target attribute string. Then we'll
+    // use the passed in features (FeaturesAsWritten) along with the new
+    // ones
+    // from the attribute.
+    Target.initFeatureMap(FeatureMap, CGM.getDiags(), TargetCPU,
+                          ParsedAttr.first);
+  } else {
+    Target.initFeatureMap(FeatureMap, CGM.getDiags(), TargetCPU,
+                          Target.getTargetOpts().Features);
+  }
+
+  // If we have at least one of the features in the feature list return
+  // true, otherwise return false.
+  SmallVector<StringRef, 1> AttrFeatures;
+  StringRef(FeatureList).split(AttrFeatures, ",");
+  for (const auto &Feature : AttrFeatures)
+    if (FeatureMap[Feature])
+      return true;
+  return false;
 }
 
 RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,