<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 5, 2013 at 5:04 PM, Andrew Trick <span dir="ltr"><<a href="mailto:atrick@apple.com" target="_blank">atrick@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Right. On the flip side, some passes should be able to make hard queries against target/subtarget that fail if the driver doesn’t initialize them. I don’t want any way to accidentally run the vectorizer or LSR without initializing my subtarget info. Also, I want to prevent early passes from getting at subtarget info.</div>
</div></blockquote><div><br></div><div><snip></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div>Passes that depend on TargetMachine can use CGContext for hard target and subtarget info queries. Since they must depend on TargetMachine anyway, they can do something like TM.getCGContext(Function).</div>
<div></div></blockquote></div><br>This sounds like you want IR-level passes which have direct, hard dependencies on the target and codegen. That would be a radical departure from the core design of the IR / MI separation. We have discussed this directly in the past and Chris and others have argued *very strongly* against this. If you want to reverse this design direction, it really should be a totally separate discussion from the current discussion. I'm not actually in the "strongly against" camp on this subject, but I *am* strongly against trying to design CGContext to address these needs when we don't yet have either a concrete design or agreement on that design. I think we should restrain our design considerations to what we need to solve the limited problem we have today, and not *breaking* the existing design around TTI, and the IR/Target layering we currently use.</div>
</div>