From 6a551c3570856f56577638f9efa2c136d386c37e Mon Sep 17 00:00:00 2001 From: Eric Christopher <echristo@gmail.com> Date: Tue, 27 Oct 2015 00:06:21 +0000 Subject: [PATCH] Use early exits to reduce indentation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251371 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGBuiltin.cpp | 94 ++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index f9ee711b90a..c3fd54e7b22 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<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, -- GitLab