<div dir="ltr">Right - if the LLVM IR doesn't have the attribute, you'd have to make whatever changes are needed to add it during Clang's IR generation. (whether or not such changes are upstreamable - I don't know/have any opinion on)</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Dec 21, 2016 at 1:48 AM Martin J. O'Riordan <<a href="mailto:martin.oriordan@movidius.com">martin.oriordan@movidius.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-IE" link="blue" vlink="purple" class="gmail_msg"><div class="m_6628573508378978435WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">Thanks David,<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">I have tried ‘</span><span style="font-family:"Courier New"" class="gmail_msg">MF.getFunction()->hasFnAttribute(Attribute::???)</span><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">’, but it seems that the front-end ‘</span><span style="font-family:"Courier New"" class="gmail_msg">NoInstrumentFunction</span><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">’ attribute is not propagated to the collection of LLVM IR attributes (no equivalent is in the ‘</span><span style="font-family:"Courier New"" class="gmail_msg">Attribute::AttrKind</span><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">’ enum).  It is not obvious that there is another mechanism, and I suspect that there is not due to the separation between FE processing and LLVM IR.<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">However, I think that I could add a new IR attribute to the TD file, and set it when emitting IR in the FE depending on the corresponding CLang ‘</span><span style="font-family:"Courier New"" class="gmail_msg">Decl</span><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">’ attribute.<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">All the best and thanks for the pointer,<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg">            MartinO<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:"Book Antiqua","serif"" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><b class="gmail_msg"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif"" class="gmail_msg">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif"" class="gmail_msg"> David Blaikie [mailto:<a href="mailto:dblaikie@gmail.com" class="gmail_msg" target="_blank">dblaikie@gmail.com</a>] <br class="gmail_msg"><b class="gmail_msg">Sent:</b> 20 December 2016 16:27<br class="gmail_msg"><b class="gmail_msg">To:</b> Martin J. O'Riordan; LLVM Developers<br class="gmail_msg"><b class="gmail_msg">Subject:</b> Re: [llvm-dev] Accessing '__attribute__((noinstrument))' during lowering<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p></div></div><div lang="EN-IE" link="blue" vlink="purple" class="gmail_msg"><div class="m_6628573508378978435WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p><div class="gmail_msg"><p class="MsoNormal gmail_msg">I imagine you can get the llvm::Function from the MachineFunction, and the attribute will be there (on the llvm::Function), but can't say I know much about it.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p><div class="gmail_msg"><div class="gmail_msg"><p class="MsoNormal gmail_msg">On Tue, Dec 20, 2016 at 2:04 AM Martin J. O'Riordan via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">Is it possible to find whether a function has the ‘</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Courier New";color:black" class="gmail_msg">noinstrument</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">’ attribute during Target lowering?  I would like to check if this is present on a function quite late in the process when I am performing normal Target lowering and Target Frame lowering actions, but I can’t find the appropriate query in the ‘</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Courier New";color:black" class="gmail_msg">MachineFunction</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">’ or ‘</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Courier New";color:black" class="gmail_msg">MachineFunctionInfo</span></span><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">’ interfaces.</span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg"> </span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">Thanks,</span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg"> </span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg">            MartinO</span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p><p class="MsoNormal gmail_msg"><span class="m_6628573508378978435gmailmsg gmail_msg"><span style="font-family:"Book Antiqua","serif";color:black" class="gmail_msg"> </span></span><u class="gmail_msg"></u><u class="gmail_msg"></u></p></div></div><p class="MsoNormal gmail_msg">_______________________________________________<br class="gmail_msg">LLVM Developers mailing list<br class="gmail_msg"><a href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="gmail_msg"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u class="gmail_msg"></u><u class="gmail_msg"></u></p></blockquote></div></div></div></blockquote></div>