<div dir="ltr">Honestly instead of optnone I'd prefer to do something else around storing optimization levels, but I think the connotations of that in LTO is going to be painful:<div><br></div><div>1) What does it mean to merge two modules of different optimization levels?</div><div>2) What does it mean to inline two functions of different optimization levels?</div><div>3) What code generator should be used?</div><div><br></div><div>Etc.</div><div><br></div><div>Honestly I think this is a lot of stuff we don't have any good ideas for and that the current LTO scope doesn't really have. If there's really a need for it though...</div><div><br></div><div>(Also, if we don't want to store the actual optimization levels then replace "different optimization levels" above with "optnone and not-optnone" :)</div><div><br></div><div>-eric</div><div><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 11, 2017 at 8:34 AM Robinson, Paul via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In D28404, Mehdi wanted to use the 'optnone' attribute as a way to record<br class="gmail_msg">
"I was compiled with -O0" in the IR, because it seems like a good idea to<br class="gmail_msg">
remember that fact in an LTO compilation and there is no way to remember<br class="gmail_msg">
that fact currently.  A couple of people felt it might be better to have<br class="gmail_msg">
this idea discussed on the dev list, where it might get better exposure,<br class="gmail_msg">
so I'm volunteering to get that discussion started.<br class="gmail_msg">
<br class="gmail_msg">
While 'optnone' does cause lots of optimizations to bypass a function,<br class="gmail_msg">
exactly matching -O0 was not the motivation and never a hard requirement.<br class="gmail_msg">
The implementation makes a distinct effort to get close to the behavior<br class="gmail_msg">
of -O0, but it's not an exact match and for the intended purpose (allowing<br class="gmail_msg">
a given function to be un-optimized to help debugging) it worked fine.<br class="gmail_msg">
<br class="gmail_msg">
Using 'optnone' to convey -O0 to LTO is something of a redefinition, or<br class="gmail_msg">
at least a re-purposing, of the attribute.  To get there from here, I<br class="gmail_msg">
think we would need a couple of things to happen, separately from the<br class="gmail_msg">
minor grunt work of adding 'optnone' to function IR at -O0.<br class="gmail_msg">
<br class="gmail_msg">
1) Update the LangRef definition of 'optnone' to reflect this intent.<br class="gmail_msg">
The current definition doesn't provide a motivation, and the description<br class="gmail_msg">
is (deliberately) a bit vague.  If we want 'optnone' to intentionally<br class="gmail_msg">
match -O0, that should be tightened up.<br class="gmail_msg">
<br class="gmail_msg">
2) Make a concerted effort to teach 'optnone' to targets.  Currently<br class="gmail_msg">
I know the X86 target is aware of it, but I'm not so sure about others.<br class="gmail_msg">
<br class="gmail_msg">
3) Take another look at what 'optnone' currently does *not* turn off,<br class="gmail_msg">
and see if there is something we can do about that.  In some cases this<br class="gmail_msg">
will not be practical, and we may just have to live with that.<br class="gmail_msg">
<br class="gmail_msg">
(Okay, we need 3 things to happen.)<br class="gmail_msg">
<br class="gmail_msg">
I won't say this is blocking Mehdi's work, but it would remove a<br class="gmail_msg">
point of contention and allow the review to proceed more smoothly.<br class="gmail_msg">
--paulr<br class="gmail_msg">
<br class="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" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class="gmail_msg">
</blockquote></div></div></div>