On Wed, May 31, 2017 at 4:13 PM, Martin Liška <mli...@suse.cz> wrote:
> On 05/31/2017 03:31 PM, Richard Biener wrote:
>> On Wed, May 31, 2017 at 2:28 PM, Martin Liška <mli...@suse.cz> wrote:
>>> On 05/31/2017 02:04 PM, Richard Biener wrote:
>>>> On Wed, May 31, 2017 at 1:51 PM, Jakub Jelinek <ja...@redhat.com> wrote:
>>>>> On Wed, May 31, 2017 at 01:46:00PM +0200, Richard Biener wrote:
>>>>>> Just wanting to add that "ab-"using options/variables to implement
>>>>>> what are really
>>>>>> function attributes doesn't look very clean.  Unless the plan is to get 
>>>>>> rid of
>>>>>> function attributes in favor of per-function options.
>>>>>
>>>>> Function attribute here is one thing (the way user writes it) and that
>>>>> combined with the command line options determines the sanitization 
>>>>> performed
>>>>> (the function attributes only say what sanitization flags should be
>>>>> ignored).  The proposed per-function variable is just a cache of this
>>>>> information, because parsing function attributes every time is way too
>>>>> expensive.
>>>>
>>>> True, but isn't that just an excuse to not improve attribute list
>>>> representation?
>>>>
>>>> Ideally we'd have sth like attributes.def and a sorted vector of
>>>> integer id, args
>>>> pairs.  Using a sorted vector of the existing stuff (compared to the tree 
>>>> list)
>>>> might also help.
>>>
>>> Then it would be tree-wise very similar to CONSTRUCTOR which also contains 
>>> vector
>>> of (index, value) pairs?
>>>
>>>>
>>>> Yes, we'd get (quite?) a bit less attribute list sharing this way but
>>>> we can still
>>>> share the actual tree-whatever thing that represents the args.
>>>
>>> Any estimation how difficult such transformation would be?
>>
>> attribute lists are dealt with in quite some places (with or without
>> helpers) so I guess it would be somewhat invasive but largely
>> mechanical.  Using a .def file vs. the current strings can be
>> done separately -- after all we can also sort strings.  I suspect
>> doing the string -> ID transform pays off faster (still linear search
>> but integer comparison instead of string compare).
>
> Ok, I'm ready to do the transformation in this stage1. That said, will you be
> Jakub fine with the original patch (rebase will be needed) as it is, using
> DECL_ATTRIBUTE?

It looks ok to me though I miss __attribute__((no_sanitize("all"))) (or is no
argument equal to 'all' -- spelling out all those opts in the testcases looks
awkward).

I'd appreciate a 2nd eye though, the patch is large.

The use of sanitize_flags_p (...) in pass_ubsan::execute would appreciate
sth like

  flags = sanitize_flags (..., fun->decl);

so it can cache across different flag settings.

Thanks,
Richard.

> Thanks,
> Martin
>
>>
>> Richard.
>>
>>> Martin
>>>
>>>>
>>>> Richard.
>>>>
>>>>>
>>>>>         Jakub
>>>
>

Reply via email to