[LLVMdev] #define LLVM_ASM_PREFIX_CHAR '\1' to make code more readable?

Chris Lattner clattner at apple.com
Thu Nov 26 13:50:30 PST 2009


On Nov 18, 2009, at 10:17 AM, Timo Juhani Lindfors wrote:
> Hi,
> 
> llvm, clang and llvm-gcc contain numerous references to 1, '\1',
> '\01', '\001', "\01" and "\01foo". This makes it difficult for one to
> find all occurences of this prefix character and lacks a central place
> where the prefix could be documented. (See for example
> http://llvm.org/bugs/show_bug.cgi?id=5480 )
> 
> How about adding a #define for this prefix? The attached three patches
> contain occurences of this prefix in llvm, clang and llvm-gcc that I
> was able to identify but I don't know what would be a proper place for
> the #define itself. Also should it maybe be LLVM_ASM_PREFIX or just
> ASM_PREFIX? (I think both character and string versions are
> needed. Afaik characters can not be concatenated to strings with
> the preprocessor).

Changing this from being a magic number to a 'static const char' is fine with me, please don't use a macro though.  The declaration of this should go in Mangler.h

> I am also not quite sure how the prefix should be documented. Does
> "\01foo" mean "foo is a name that can be given to assembler or dlsym()
> and should not ever be mangled in any way"?

\01 means 'do not add the "USER LABEL PREFIX" for the target', names definitely do need to be mangled for some targets even without this.  For example, elf systems can't handle symbols with spaces in them.

-Chris



More information about the llvm-dev mailing list