From: Florian Hahn Date: Sat, 23 Jan 2021 12:09:29 +0000 (+0000) Subject: [LTO] Store target attributes as vector of strings (NFC). X-Git-Tag: llvmorg-13-init~354 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08dbcc14e254396cd5765994cab97274003611bb;p=platform%2Fupstream%2Fllvm.git [LTO] Store target attributes as vector of strings (NFC). The target features are obtained as a list of features/attributes. Instead of storing them in a single string, store the vector. This matches lto::Config's behavior and simplifies the transition to lto::backend(). Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D95224 --- diff --git a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h index a817969..f76cc5f 100644 --- a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h +++ b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h @@ -93,7 +93,7 @@ struct LTOCodeGenerator { void setFileType(CodeGenFileType FT) { FileType = FT; } void setCpu(StringRef MCpu) { this->MCpu = std::string(MCpu); } - void setAttr(StringRef MAttr) { this->MAttr = std::string(MAttr); } + void setAttrs(std::vector MAttrs) { this->MAttrs = MAttrs; } void setOptLevel(unsigned OptLevel); void setShouldInternalize(bool Value) { ShouldInternalize = Value; } @@ -223,7 +223,7 @@ private: std::vector CodegenOptions; std::string FeatureStr; std::string MCpu; - std::string MAttr; + std::vector MAttrs; std::string NativeObjectPath; TargetOptions Options; CodeGenOpt::Level CGOptLevel = CodeGenOpt::Default; diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index cb30db1..bdde2ba 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -361,7 +361,7 @@ bool LTOCodeGenerator::determineTarget() { // Construct LTOModule, hand over ownership of module and target. Use MAttr as // the default set of features. - SubtargetFeatures Features(MAttr); + SubtargetFeatures Features(join(MAttrs, "")); Features.getDefaultSubtargetFeatures(Triple); FeatureStr = Features.getString(); // Set a default CPU for Darwin triples. diff --git a/llvm/tools/llvm-lto/llvm-lto.cpp b/llvm/tools/llvm-lto/llvm-lto.cpp index ad6b78b..912a88d 100644 --- a/llvm/tools/llvm-lto/llvm-lto.cpp +++ b/llvm/tools/llvm-lto/llvm-lto.cpp @@ -1011,12 +1011,7 @@ int main(int argc, char **argv) { CodeGen.setCpu(codegen::getMCPU().c_str()); CodeGen.setOptLevel(OptLevel - '0'); - - auto MAttrs = codegen::getMAttrs(); - if (!MAttrs.empty()) { - std::string attrs = join(MAttrs, ","); - CodeGen.setAttr(attrs); - } + CodeGen.setAttrs(codegen::getMAttrs()); if (auto FT = codegen::getExplicitFileType()) CodeGen.setFileType(FT.getValue()); diff --git a/llvm/tools/lto/lto.cpp b/llvm/tools/lto/lto.cpp index 81f64df..b48bc92 100644 --- a/llvm/tools/lto/lto.cpp +++ b/llvm/tools/lto/lto.cpp @@ -146,11 +146,7 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LTOModule, lto_module_t) // Convert the subtarget features into a string to pass to LTOCodeGenerator. static void lto_add_attrs(lto_code_gen_t cg) { LTOCodeGenerator *CG = unwrap(cg); - auto MAttrs = codegen::getMAttrs(); - if (!MAttrs.empty()) { - std::string attrs = join(MAttrs, ","); - CG->setAttr(attrs); - } + CG->setAttrs(codegen::getMAttrs()); if (OptLevel < '0' || OptLevel > '3') report_fatal_error("Optimization level must be between 0 and 3");