Hello Devang,<br><br>answers are interleaved<br><br><div class="gmail_quote">2011/12/7 Devang Patel <span dir="ltr"><<a href="mailto:dpatel@apple.com">dpatel@apple.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hello,<br>
<div class="im"><br>
On Dec 7, 2011, at 2:07 AM, Seb wrote:<br>
<br>
> Hi all,<br>
><br>
> I would like to add an option for LLVM 'opt' to disable a specific optimization pass from command line.<br>
><br>
> The idea is to have something like:<br>
><br>
> opt -O2 -disable-pass=[passname,...]<br>
><br>
> Do you think it could be useful ?<br>
<br>
</div>I have few questions :<br>
<br>
- Why (and when) would you us this ?<br></blockquote><div><br>I woudl use this to selectively disable passes in opt that are either redundant with passes performed by the fron-end I'm working on our exhibit a BUG in opt. For instance, I figured out that loop-idiom pass has a BUG in LLVM 2.9, a llvm.memcpy is generated for an overlapping memory region and then x86 backend reorder loads/store thus generating a BUG. <br>
<br>So my use would be to disable all loop-idiom invocations.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
- Some of the passes are executed multiple times, how would you select which invocation to disable ? Or would you disable all invocation of such passes ?<br></blockquote><div><br>By default I guess I would like to disable all invocation of such passes. We could also imagine to have an option -disable-pass=[pass_name:inv_num, ...] to deal with multiple invocation.<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
- Some passes are required by another passes. In such cases PassManager will insist on running them, which may conflict with the user request from command line. Who wins?<br></blockquote><div><br>How to I know that a pass  is required by another ?<br>
Let's say give priority to pass manager and issue a warning like like <br>'option -disable-pass=<pass_name> ignored because required by pass <other_pass>.'<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

- Why not update the list passes run as part of -O2 (use --debug-pass=Arguments to get it) to remove selected passes and run opt <my list of passes> ... ?<br>
<div class="im"><br></div></blockquote><div> </div><div> I also thought about this but it can lead to long command lines and source of errors.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">
<br>
> How should I proceed to develop it and commit changes to LLVM trunk ?<br>
> Thanks for your advices and recommandations.<br>
> Best Regards<br>
> Seb<br>
<br>
<br>
</div>-<br>
Devang<br>
<br>
</blockquote></div><br>