From 7f65c13ecb9c016d95e829e9f2a8eb6f13152c30 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Mon, 22 Apr 2019 22:40:37 +0000 Subject: [PATCH] Try to work around compile errors with older versions of GCC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358927 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/dsymutil/dsymutil.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/dsymutil/dsymutil.cpp b/tools/dsymutil/dsymutil.cpp index 1651fa86f79..0eb1257d98d 100644 --- a/tools/dsymutil/dsymutil.cpp +++ b/tools/dsymutil/dsymutil.cpp @@ -280,6 +280,10 @@ static bool verify(llvm::StringRef OutputFile, llvm::StringRef Arch) { namespace { struct OutputLocation { + OutputLocation(std::string DWARFFile, Optional ResourceDir = {}) + : DWARFFile(DWARFFile), ResourceDir(ResourceDir) {} + /// This method is a workaround for older compilers. + Optional getResourceDir() const { return ResourceDir; } std::string DWARFFile; Optional ResourceDir; }; @@ -287,21 +291,21 @@ struct OutputLocation { static Expected getOutputFileName(llvm::StringRef InputFile) { if (OutputFileOpt == "-") - return OutputLocation{OutputFileOpt, {}}; + return OutputLocation(OutputFileOpt); // When updating, do in place replacement. if (OutputFileOpt.empty() && (Update || !SymbolMap.empty())) - return OutputLocation{InputFile, {}}; + return OutputLocation(InputFile); // If a flat dSYM has been requested, things are pretty simple. if (FlatOut) { if (OutputFileOpt.empty()) { if (InputFile == "-") return OutputLocation{"a.out.dwarf", {}}; - return OutputLocation{(InputFile + ".dwarf").str(), {}}; + return OutputLocation((InputFile + ".dwarf").str()); } - return OutputLocation{OutputFileOpt, {}}; + return OutputLocation(OutputFileOpt); } // We need to create/update a dSYM bundle. @@ -325,7 +329,7 @@ static Expected getOutputFileName(llvm::StringRef InputFile) { llvm::sys::path::append(Path, "Contents", "Resources"); StringRef ResourceDir = Path; llvm::sys::path::append(Path, "DWARF", llvm::sys::path::filename(DwarfFile)); - return OutputLocation{Path.str(), ResourceDir.str()}; + return OutputLocation(Path.str(), ResourceDir.str()); } /// Parses the command line options into the LinkOptions struct and performs @@ -558,7 +562,7 @@ int main(int argc, char **argv) { WithColor::error() << toString(OutputLocationOrErr.takeError()); return 1; } - OptionsOrErr->ResourceDir = OutputLocationOrErr->ResourceDir; + OptionsOrErr->ResourceDir = OutputLocationOrErr->getResourceDir(); std::string OutputFile = OutputLocationOrErr->DWARFFile; if (NeedsTempFiles) { -- 2.50.1