hubert.reinterpretcast added inline comments.
================ Comment at: llvm/lib/MC/MCAsmStreamer.cpp:1007-1008 +static inline bool isPrintableString(StringRef Data) { + const auto BeginPtr = Data.begin(), EndPtr = Data.end(); + for (const unsigned char C : make_range(BeginPtr, EndPtr)) { + if (!isPrint(C)) ---------------- If going through the whole string, going through `make_range` is not needed. ================ Comment at: llvm/lib/MC/MCAsmStreamer.cpp:1009 + for (const unsigned char C : make_range(BeginPtr, EndPtr)) { + if (!isPrint(C)) + return false; ---------------- `isPrint` returns true for `"`, which does require escaping. ================ Comment at: llvm/lib/MC/MCAsmStreamer.cpp:1048-1051 case MCAsmInfo::ACLS_SingleQuotePrefix: - printCharacterList(printOneCharacterFor([&OS](char C) { - const char AsmCharLitBuf[2] = {'\'', C}; - OS << StringRef(AsmCharLitBuf, sizeof(AsmCharLitBuf)); - })); + // If the whole string can be printed, print it directly. + if (isPrintableString(Data)) + OS << '"' << Data << '"'; ---------------- This breaks the abstraction. That a "byte-list" directive accepting a list of elements where there are single-quote-prefixed character literals is available does not mean that the same directive accepts a string argument. Note: `PrintQuotedString` does print more general strings on AIX (that do not contain a newline); however, I do not believe it to be desirable to emit control characters and the such "raw". ================ Comment at: llvm/lib/MC/MCAsmStreamer.cpp:1123-1126 if (MAI->getAscizDirective() && Data.back() == 0) { OS << MAI->getAscizDirective(); Data = Data.substr(0, Data.size() - 1); } else if (LLVM_LIKELY(MAI->getAsciiDirective())) { ---------------- Here may be a nice point to add a condition that `hasPairedDoubleQuoteStringConstants` means we check `isPrintableString` before deciding to use AIX `.string` for `.asciz` and AIX `.byte` for `.ascii`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D102814/new/ https://reviews.llvm.org/D102814 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits