diff options
-rw-r--r-- | llvm/docs/LangRef.html | 5 | ||||
-rw-r--r-- | llvm/lib/VMCore/AsmWriter.cpp | 3 | ||||
-rw-r--r-- | llvm/test/Assembler/2008-10-14-QuoteInName.ll | 3 |
3 files changed, 7 insertions, 4 deletions
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html index 27bcb920025..f8ca2879c44 100644 --- a/llvm/docs/LangRef.html +++ b/llvm/docs/LangRef.html @@ -335,8 +335,9 @@ the parser.</p> For example, %foo, @DivisionByZero, %a.really.long.identifier. The actual regular expression used is '<tt>[%@][a-zA-Z$._][a-zA-Z$._0-9]*</tt>'. Identifiers which require other characters in their names can be surrounded - with quotes. In this way, anything except a <tt>"</tt> character can - be used in a named value.</li> + with quotes. Special characters may be escaped using "\xx" where xx is the + ASCII code for the character in hexadecimal. In this way, any character can + be used in a name value, even quotes themselves. <li>Unnamed values are represented as an unsigned numeric value with their prefix. For example, %12, @2, %44.</li> diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index ddcb8d6c0ab..0080d63b63a 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/lib/VMCore/AsmWriter.cpp @@ -112,10 +112,9 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, OS << '"'; for (unsigned i = 0; i != NameLen; ++i) { char C = NameStr[i]; - assert(C != '"' && "Illegal character in LLVM value name!"); if (C == '\\') { OS << "\\\\"; - } else if (isprint(C)) { + } else if (C != '"' && isprint(C)) { OS << C; } else { OS << '\\'; diff --git a/llvm/test/Assembler/2008-10-14-QuoteInName.ll b/llvm/test/Assembler/2008-10-14-QuoteInName.ll new file mode 100644 index 00000000000..ccd77791caa --- /dev/null +++ b/llvm/test/Assembler/2008-10-14-QuoteInName.ll @@ -0,0 +1,3 @@ +; RUN: llvm-as < %s | llvm-dis | grep "quote" + +@"a\22quote" = global i32 0 |