This is the mail archive of the gcc@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: Release novops attribute for external use?


On Tue, Apr 13, 2010 at 1:35 PM, Manuel López-Ibáñez
<lopezibanez@gmail.com> wrote:
> 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?

Not really.

Richard.

> Cheers,
>
> Manuel.
>


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