This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] analysis of global statics and removal associated vdefsand vuses




Mark Mitchell wrote:

Kenneth Zadeck wrote:

Is it possible to notice this by looking at the format string? Given that we have a pass that parses this string and produces messages when the args do not match, can we just look for non standard formats (with the obvious caveats that if we do not see the string, we have to assume the worst...)


No; you are specifically allowed to redefine the meanings of the built-in formats like "%d". And the registration of such redefinitions occurs by calling a function (register_printf_function) rather than as part of the call of printf itself. So, with GNU libc, you just can't do what you want, sadly.

Just for the record, this sucks. However, it is what it is and if we cannot do any better we will just move on.

However, once we get the aliasing really working, we may find that this is a significant performance problem in real (i.e. non bench marking) code. In real code, significant number of functions have calls to printf and because of this extension a call to any function that calls printf, must clobber every static variable. Without the extension, the calls to printf (assuming we could properly annotate them,) would not effect the clobber sets at all.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]