<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jul 10, 2013, at 5:52 AM, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:</div><blockquote type="cite"><div dir="ltr">So, after digging into this, I discovered that even though we have enums for the calling conventions in AttributedType, they are dead.  They are only used in case labels.  John added AttributedType with the enum in 2011 here:<div>
<a href="http://llvm.org/viewvc/llvm-project?view=revision&revision=122942">http://llvm.org/viewvc/llvm-project?view=revision&revision=122942</a></div><div><br></div><div>I think his intention was that we should be using AttributedType for calling conventions.  Today what we do is unwrap and rewrap the FunctionType with a new calling convention.  CC_Default is used everywhere there wasn't an explicit attribute.  There are exceptions like -mrtd which force the CC to stdcall, but it looks pretty buggy with lots of checks to try to infer if the stdcall convention was applied by -mrtd or explicitly with an attribute.</div>
<div><br></div><div>It looks like in the long run handleFunctionTypeAttr should be doing what it does today, except it should wrap FunctionType in some AttributedType sugar which points to the original function type and the new function type.</div></div></blockquote><blockquote type="cite"><div dir="ltr">
<div><br></div><div>Does that make sense?<br></div></div></blockquote><div><br></div>Yes, that's the intended direction.</div><div><br></div><div>John.</div></body></html>