[PATCH] D12923: Add support for function attribute "notail"

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 6 08:28:23 PST 2015


spatel added inline comments.

================
Comment at: lib/Bitcode/Writer/BitcodeWriter.cpp:2132-2134
@@ -2131,4 +2131,5 @@
     Vals.push_back(VE.getAttributeID(CI.getAttributes()));
     Vals.push_back((CI.getCallingConv() << 1) | unsigned(CI.isTailCall()) |
-                   unsigned(CI.isMustTailCall()) << 14 | 1 << 15);
+                   unsigned(CI.isMustTailCall()) << 14 | 1 << 15 |
+                   unsigned(CI.isNoTailCall()) << 16);
     Vals.push_back(VE.getTypeID(FTy));
----------------
ahatanak wrote:
> spatel wrote:
> > Hi Akira -
> > 
> > Can you give these bitfields proper names in a struct or enum in LLVMBitCodes.h? It took me a while to understand why we have this encoding (no code comments...).
> > 
> > The other reason I ask is because I was about to swipe bit 16 myself. :)
> > 
> > I think that's the only backwards-compatible way to add fast-math-flags to a call ( PR21290 ). We can't use the usual method of tacking an optional field to the end of the record because the record length is unknown for a call with varargs.
> Hi Sanjay.
> 
> I've made the changes you suggested in my local branch, but I think they should be in a follow-up patch to separate the changes related to notail from the changes related to the bitfield names.
> 
> These are the enums I defined in LLVMBitCodes.h:
> 
> enum CallMarkersFlags {
>   CALL_TAIL = 0,
>   CALL_CCONV = 1,
>   CALL_MUSTTAIL = 14,
>   CALL_EXPLICIT_TYPE = 15,
>   CALL_NOTAIL = 16
> };
Yes, a follow-up NFC patch sounds right. Thanks!


http://reviews.llvm.org/D12923





More information about the llvm-commits mailing list