Release novops attribute for external use?
Manuel López-Ibáñez
lopezibanez@gmail.com
Tue Apr 13 11:53:00 GMT 2010
On 13 April 2010 12:23, Richard Guenther <richard.guenther@gmail.com> wrote:
> On Tue, Apr 13, 2010 at 12:15 PM, Bingfeng Mei <bmei@broadcom.com> wrote:
>>>
>>> Surely printf writes to global memory (it clobbers the stdout FILE*)
>>>
>> OK, the point is not about whether printf is pure or not. Instead, if
>> programmer knows the callee function such as printf contains no
>> memory access that affects operations inside caller function, and he
>> would like to have a way to optimize the code. Our engineer gave following
>> example:
>>
>> void myfunc(MyStruct *myStruct)
>> {
>> int a,b;
>> a = myStruct->a;
>> printf("a=%d\n",a);
>> b = 2*mystruct->a; // I would like to have the compiler acting as if I had written b = 2*a;
>> ...
>> }
>> Providing such attribute may be potentially dangerous. But it is just
>> like "restrict" qualifier and some other attributes, putting responsibilty
>> of correctness on the programmer. "novops" seems to achieve that effect,
>> though its semantics doesn't match exactly what I described.
>
> Indeed. IPA pointer analysis will probably figure it out
> automagically - that *myStruct didn't escape the unit.
> Being able to annotate incoming pointers this way would
> maybe be useful.
This is
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31893
isn't it?
Cheers,
Manuel.
More information about the Gcc
mailing list