> > I'm not asking you to wrap the driver. I'm asking you to change clang's > driver logic when targeting *-*-nacl to use the existing logic to suppress > builtin treatment of functions. > > >> Oh, it turns out Clang does not currently support -fno-builtin-<FUNC> at >> all: >> http://llvm.org/bugs/show_bug.cgi?id=4941 >> >> >> What functions do you want to opt out of builtin treatment? All of them? >> Just math functions? >> > > For starters, math functions. There aren't many libc math functions > handled there, BTW. When I was working on the original patch I dug through > history - a couple were added (pow and sqrt) I think, and sqrt was then > backed off due to some problems. Even with pow there are other constrains > such as errno (the builtin is not generated when we want errno, naturally, > even without -fno-builtins). Perhaps I can make the target hook more > generic - controlling all math libraries (the BIfoo ones, not > BI__builtin_foo) instead of just pow? > > > I really don't want this to be an IR-gen target hook, but adding a > cc1-level ability to disable builtin treatment for math functions makes > sense to me, or you can just add frontend support for -fno-builtin-<FUNC>. >
I looked some more into this. There currently no hooks to say something like "disable builtin treatment for math functions" because of the way builtins are populated and identified. If I understand you correctly, you want this decision to be made before IR gen; meaning that you want something that says "this name is not a builtin at all, for some special conditions". One way to implement this is mark the math builtins somehow in Builtins.def and then have a new LangOpts option to tweak that. Then, when builtins are read and populated in Builtin::Context::InitializeBuiltins, math builtins can be skipped. Recognizing math builtins can be done by looking at the header specified for them in Builtins.def - would this work, or do we need some special attribute? Now, once that's in place a new cc1-level flag can be added and in the driver we can always force this flag for PNaCl (is there a place/precedent for target-specific forcing of cc1 flags in the driver?) As for: > just add frontend support for -fno-builtin-<FUNC>. This looks quite challenging. I'm not sure the LangOptions infrastructure supports such options (and the command-line parsing library for the gcc-compatible way) so there's a whole bunch of infrastructure that needs to be upgraded. Maybe I'm missing something basic, though. Eli
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
