summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-size/llvm-size.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-10-31 17:11:31 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-10-31 17:11:31 +0000
commit91160d851e767cb1ee77b5899a213b2a5a64ad98 (patch)
tree0fe7337de482314b93ddd728f7973bf0afcf4ed5 /llvm/tools/llvm-size/llvm-size.cpp
parentf5c0689e92ec46a7f3ec06f4dd8725c9d858b0dd (diff)
downloadbcm5719-llvm-91160d851e767cb1ee77b5899a213b2a5a64ad98.tar.gz
bcm5719-llvm-91160d851e767cb1ee77b5899a213b2a5a64ad98.zip
Fix an unconditional break in checkMachOAndArchFlags
Found by PVS-Studio. llvm-svn: 285598
Diffstat (limited to 'llvm/tools/llvm-size/llvm-size.cpp')
-rw-r--r--llvm/tools/llvm-size/llvm-size.cpp48
1 files changed, 22 insertions, 26 deletions
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp
index c274649190b..1e4c436157c 100644
--- a/llvm/tools/llvm-size/llvm-size.cpp
+++ b/llvm/tools/llvm-size/llvm-size.cpp
@@ -498,36 +498,32 @@ static void printObjectSectionSizes(ObjectFile *Obj) {
}
}
-/// Checks to see if the @p o ObjectFile is a Mach-O file and if it is and there
+/// Checks to see if the @p O ObjectFile is a Mach-O file and if it is and there
/// is a list of architecture flags specified then check to make sure this
/// Mach-O file is one of those architectures or all architectures was
/// specificed. If not then an error is generated and this routine returns
/// false. Else it returns true.
-static bool checkMachOAndArchFlags(ObjectFile *o, StringRef file) {
- if (isa<MachOObjectFile>(o) && !ArchAll && ArchFlags.size() != 0) {
- MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o);
- bool ArchFound = false;
- MachO::mach_header H;
- MachO::mach_header_64 H_64;
- Triple T;
- if (MachO->is64Bit()) {
- H_64 = MachO->MachOObjectFile::getHeader64();
- T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype);
- } else {
- H = MachO->MachOObjectFile::getHeader();
- T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype);
- }
- unsigned i;
- for (i = 0; i < ArchFlags.size(); ++i) {
- if (ArchFlags[i] == T.getArchName())
- ArchFound = true;
- break;
- }
- if (!ArchFound) {
- errs() << ToolName << ": file: " << file
- << " does not contain architecture: " << ArchFlags[i] << ".\n";
- return false;
- }
+static bool checkMachOAndArchFlags(ObjectFile *O, StringRef Filename) {
+ auto *MachO = dyn_cast<MachOObjectFile>(O);
+
+ if (!MachO || ArchAll || ArchFlags.empty())
+ return true;
+
+ MachO::mach_header H;
+ MachO::mach_header_64 H_64;
+ Triple T;
+ if (MachO->is64Bit()) {
+ H_64 = MachO->MachOObjectFile::getHeader64();
+ T = MachOObjectFile::getArchTriple(H_64.cputype, H_64.cpusubtype);
+ } else {
+ H = MachO->MachOObjectFile::getHeader();
+ T = MachOObjectFile::getArchTriple(H.cputype, H.cpusubtype);
+ }
+ if (none_of(ArchFlags, [&](const std::string &Name) {
+ return Name == T.getArchName();
+ })) {
+ error(Filename + ": No architecture specified");
+ return false;
}
return true;
}
OpenPOWER on IntegriCloud