<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jan 31, 2014 at 6:13 AM, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: rengolin<br>
Date: Fri Jan 31 08:13:20 2014<br>
New Revision: 200545<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=200545&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=200545&view=rev</a><br>
Log:<br>
Connect -fno-exceptions to -arm-disable-ehabi<br>
<br>
Added:<br>
    cfe/trunk/test/Driver/arm-no-exception.c<br>
Modified:<br>
    cfe/trunk/lib/Driver/Tools.cpp<br>
<br>
Modified: cfe/trunk/lib/Driver/Tools.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=200545&r1=200544&r2=200545&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=200545&r1=200544&r2=200545&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Driver/Tools.cpp (original)<br>
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Jan 31 08:13:20 2014<br>
@@ -830,6 +830,12 @@ void Clang::AddARMTargetArgs(const ArgLi<br>
       CmdArgs.push_back("-backend-option");<br>
       CmdArgs.push_back("-arm-reserve-r9");<br>
     }<br>
+<br>
+    // Exception handling<br>
+    if (Args.hasArg(options::OPT_fno_exceptions)) {<br>
+      CmdArgs.push_back("-backend-option");<br>
+      CmdArgs.push_back("-arm-disable-ehabi");<br>
+    }<br></blockquote><div><br></div><div>I think you want 'Args.hasFlag(options::OPT_fno_exceptions, options::OPT_fexceptions, false)' in order to make sure that 'clang -fno-exceptions -fexceptions' produces unwind tables.</div>
<div><br></div><div>I also seem to recall that there are major problems with -backend-option if you want to run Clang on multiple TUs in the same process.  It causes us to call llvm::cl::ParseCommandLineOptions twice, which isn't allowed, and bad things happen.  It doesn't have to be fixed now, but long term it needs to go away if anyone wants to, say, run a Clang tool over code that normally uses -fno-exceptions on ARM.</div>
</div></div></div>