llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.68k stars 11.86k forks source link

Include calling convention in function print #29002

Open llvmbot opened 8 years ago

llvmbot commented 8 years ago
Bugzilla Link 28628
Version trunk
OS All
Reporter LLVM Bugzilla Contributor
CC @rnk

Extended Description

Unsure if the option in PrettyPrinter.h is necessary, but I wanted it in my own space. If there was already a way to specify my intention to print the calling convention, please inform me and close this - but I didn't see one.

Index: PrettyPrinter.h

--- PrettyPrinter.h (revision 275612) +++ PrettyPrinter.h (working copy) @@ -50,7 +50,7 @@ UseVoidForZeroParams(!LO.CPlusPlus), TerseOutput(false), PolishForDeclaration(false), Half(LO.Half), MSWChar(LO.MicrosoftExt && !LO.WChar),

Index: DeclPrinter.cpp

--- DeclPrinter.cpp (revision 275612) +++ DeclPrinter.cpp (working copy) @@ -620,6 +640,68 @@ Out << "auto " << Proto << " -> "; Proto.clear(); } +

llvmbot commented 8 years ago

Let's try something more like this, then... I would have reused TypePrinter stuff, but it isn't exposed in a manner that makes this simple.

This fixes the 'bug' without introducing too much headache, whether or not an option is warranted isn't up to me, I suppose, but the TypePrinter does it without an option so it should be fine.

Index: DeclPrinter.cpp

--- DeclPrinter.cpp (revision 275612) +++ DeclPrinter.cpp (working copy) @@ -620,6 +640,24 @@ Out << "auto " << Proto << " -> "; Proto.clear(); } +

llvmbot commented 8 years ago

Well after some chatting in #llvm I am lead to believe patches like these aren't exactly necessary because MSVC compat in printing isn't something that clang is reaching for right now.

The bug itself is not invalid, I believe - because outside of TypePrinter calling conventions aren't printed which may not be desirable, but perhaps some of the MSVC specific compatibility stuff can be stripped out.

llvmbot commented 8 years ago

Just noticed I left in CC_X86Pascal for MSVC. Awkward, it shouldn't be an issue unless some calling convention is found to be __pascal by clang. Unlikely but possible.

printFunctionProtoAfter does contain some functionality to add the calling convention, with no MSVC support (it seems?). I haven't been using the TypePrinter, but perhaps it might be better to move over and attempt to rectify some of these issues there as well.

rnk commented 8 years ago

I thought we already handled it in TypePrinter, but maybe DeclPrinter doesn't use that for printing declarators.