<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jul 26, 2013 at 4:03 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I see a lot of command line options being set in Target backend libraries. The problem with that is if a third party tool links with Target libraries and has a command line option that needs to be processed, the option in the Target libraries will get overridden.<br>


<br>
$ cd llvm/lib/Target<br>
$ grep 'cl::' */*.cpp --> produces lot of such occurences.<br>
<br>
For example :- libLLVMX86CodeGen.a contains<br>
libLLVMX86CodeGen.a:<u></u>X86RegisterInfo.cpp.o:<u></u>0000000000000080 b EnableBasePointer<br>
<br>
I think those command line options would need to be moved to the drivers that are using them, Isnt it ?<br>
<br>
Am I mistaken ?<br>
<br>
Thanks</blockquote><div><br></div><div>This is, of course, a problem not only for Target libraries but for other parts of LLVM as well. The cl:: infrastructure, by virtue of its global-ness, allows convenience because options can be added deep inside libraries without too much plumbing. On the other hand, this causes a large number of problems - the one you mention is just one of them.</div>

<div><br></div><div>Eli</div><div><br></div><div><br></div><div><br></div><div> </div></div></div></div>