<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 14, 2014 at 5:14 PM, Kim Gräsman <span dir="ltr"><<a href="mailto:kim.grasman@gmail.com" target="_blank">kim.grasman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That's one way of looking at it.<br>
<br>
But we're not really compiling (maybe Jacob is, in some sense); we're<br>
doing static analysis and the #error directives could give us useful<br>
data for analysis instead of just aborting.<br></blockquote><div><br></div><div>I don't think anyone would be against adding a callback to PPCallbacks to indicate what the error message is so you can get the data. However, being able to affect the outcome of compilation from a PPCallbacks callback seems unwise; it would be kind of like if the #if callback could decide which branch to take, which means explicitly violating the source code's meaning, which a compiler shouldn't be doing!</div>
<div><br></div><div>For the purpose of simply collecting #error directives from TU's, it seems like the simplest thing to do would be to use pp-trace (once there is a #error callback in PPCallbacks) driven from a short script. You could even do better than trying to extract the header name from the #error message: just look for the dominating #ifdef and see where it is defined.</div>
<div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Regex was actually my next plan of attack, we'll see if I ever get<br>
around to it :-)<br>
<span class="HOEnZb"><font color="#888888"><br>
- Kim<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Tue, Jan 14, 2014 at 10:58 PM, Sean Silva <<a href="mailto:silvas@purdue.edu">silvas@purdue.edu</a>> wrote:<br>
> Just do:<br>
><br>
> $ sed -i -e 's/#error.*//' **/*.h<br>
><br>
> Really, ignoring the semantics of the program being analyzed (i.e. that it<br>
> requests compilation to be aborted) is just as much of a hack as using sed<br>
> to modify the headers. In both cases, you are forcefully trampling the<br>
> source code's request.<br>
><br>
> -- Sean Silva<br>
><br>
><br>
> On Tue, Jan 14, 2014 at 2:37 PM, Jacob Carlborg <<a href="mailto:doob@me.com">doob@me.com</a>> wrote:<br>
>><br>
>> On 2014-01-14 18:58, Alp Toker wrote:<br>
>><br>
>>> This is an interesting idea. It's always a hard error right now.<br>
>>><br>
>>> We've seen similar requests to 'downgrade' a few other errors like the<br>
>>> MS inline assembly missing-backend one and I suspect there's a pattern<br>
>>> developing here.<br>
>>><br>
>>> Could you expand on your specific use-case a little?<br>
>><br>
>><br>
>> I have a tool that translate C header files to D modules[1]. The tool is<br>
>> designed to translate header files one at the time. The problem is that in<br>
>> some C libraries some kind of umbrella headers are used. They only serve to<br>
>> include other sub header files. Some of these libraries enforce this by the<br>
>> sub header files checking for a preprocessor macro defined by the umbrella<br>
>> header. If this macro is not defined they halt the complication with the<br>
>> #error directive.<br>
>><br>
>> I'm using libclang since the tool itself is written in D. D is ABI<br>
>> compatible with C.<br>
>><br>
>> [1] <a href="https://github.com/jacob-carlborg/dstep" target="_blank">https://github.com/jacob-carlborg/dstep</a><br>
>><br>
>> --<br>
>> /Jacob Carlborg<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-dev mailing list<br>
>> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
><br>
</div></div></blockquote></div><br></div></div>