Is it possible to make gcc detect whether printf prints floating point numbers?
Thierry Moreau
thierry.moreau@connotech.com
Tue Jun 12 13:11:00 GMT 2012
Joseph S. Myers wrote:
> On Tue, 12 Jun 2012, Bin.Cheng wrote:
>
>>>> I noticed that GCC now can check format string of printf functions, so
>>>> I am wondering if it is possible to take advantage of this utility, by
>>>> making gcc detect whether printf prints floating point number and then
>>>> generate assembly directive in backend to pull in floating point
>>>> functions only if necessary.
>>> Obviously this won't help if the program is using functions such as
>>> vprintf to print things with variable format strings....
>> One method is to analyze the type of arguments when format strings are
>> varying. Though this method might fail when user trying to output a
>> "long long" type int with conversion specifier "%f", I think it's not
>> a big deal.
>
> That method won't help for vprintf (unless you do something more
> complicated and interprocedural) since then you have just a (probably
> nonconstant) format strict and a (definitely nonconstant) va_list so don't
> know the types of the arguments at all.
>
The original question does not belong to gcc development. It's an
embedded software tools issue.
The straightforward solution is to supply the (library internal)
...printf() function that ultimately handles any C-style output format
string. I mean a variant of this function that does not support floating
point output.
I used the word straightforward because embedded software development
usually implies more intricate issues with the run-time support library
(exception handling, dynamic memory, linker issues). The more serious
the memory restrictions in the embedded environment, the more critical
these issues become.
Let gcc development proceed as a great compiler technology!
Regards,
--
- Thierry Moreau
CONNOTECH Experts-conseils inc.
9130 Place de Montgolfier
Montreal, QC, Canada H2M 2A1
Tel. +1-514-385-5691
More information about the Gcc
mailing list