diff --git a/llvm/lib/TableGen/Main.cpp b/llvm/lib/TableGen/Main.cpp index c3869c3fb9a5a..3330b70cdc2e1 100644 --- a/llvm/lib/TableGen/Main.cpp +++ b/llvm/lib/TableGen/Main.cpp @@ -167,12 +167,11 @@ int llvm::TableGenMain(const char *argv0, // Write output to memory. Timer.startBackendTimer("Backend overall"); - SmallString<128> FilenamePrefix(OutputFilename); - sys::path::replace_extension(FilenamePrefix, ""); TableGenOutputFiles OutFiles; unsigned status = 0; // ApplyCallback will return true if it did not apply any callback. In that // case, attempt to apply the MainFn. + StringRef FilenamePrefix(sys::path::stem(OutputFilename)); if (TableGen::Emitter::ApplyCallback(Records, OutFiles, FilenamePrefix)) status = MainFn ? MainFn(OutFiles, Records) : 1; Timer.stopBackendTimer(); @@ -195,7 +194,7 @@ int llvm::TableGenMain(const char *argv0, SmallString<128> Filename(OutputFilename); // TODO: Format using the split-file convention when writing to stdout? if (Filename != "-") { - Filename = FilenamePrefix; + sys::path::replace_extension(Filename, ""); Filename.append(Suffix); } if (int Ret = WriteOutput(Parser, argv0, Filename, Content))