From: Eric Christopher Date: Tue, 27 Oct 2015 00:06:21 +0000 (+0000) Subject: Use early exits to reduce indentation. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6a551c3570856f56577638f9efa2c136d386c37e;p=clang Use early exits to reduce indentation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251371 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index f9ee711b90..c3fd54e7b2 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -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(CurFuncDecl)) { - unsigned BuiltinID = TargetDecl->getBuiltinID(); - const char *FeatureList = - CGM.getContext().BuiltinInfo.getRequiredFeatures(BuiltinID); - if (FeatureList && StringRef(FeatureList) != "") { - StringRef TargetCPU = Target.getTargetOpts().CPU; - llvm::StringMap FeatureMap; - - if (const auto *TD = FD->getAttr()) { - // 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(CurFuncDecl); + if (!FD) return true; - // If we have at least one of the features in the feature list return - // true, otherwise return false. - SmallVector 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 FeatureMap; + + if (const auto *TD = FD->getAttr()) { + // 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 AttrFeatures; + StringRef(FeatureList).split(AttrFeatures, ","); + for (const auto &Feature : AttrFeatures) + if (FeatureMap[Feature]) + return true; + return false; } RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,