<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<div class="" style="word-wrap:break-word">Moved the test.
<div class="">Feel free to commit it for me :)</div>
<div class=""><br class="">
</div>
<div class=""></div>
</div>
<div class="" style="word-wrap:break-word">
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Oct 8, 2015, at 3:29 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" class="">richard@metafoo.co.uk</a>> wrote:</div>
<br class="x_Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Please add the test to some existing test file for the ownership_takes attribute, such as test/Sema/attr-ownership.c. Otherwise, LGTM.<br class="">
<div class="x_gmail_extra"><br class="">
<div class="x_gmail_quote">On Thu, Oct 8, 2015 at 3:25 PM, Adrian Zgorzalek <span dir="ltr" class="">
<<a href="mailto:adek@fb.com" target="_blank" class="">adek@fb.com</a>></span> wrote:<br class="">
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="">
<div class="" style="word-wrap:break-word">Yay! It worked, thank you!
<div class=""><br class="">
</div>
<div class=""></div>
</div>
<div class="">
<div class="x_h5">
<div class="" style="word-wrap:break-word">
<div class=""><br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Oct 8, 2015, at 3:10 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>> wrote:</div>
<br class="">
<div class="">
<div dir="ltr" class="">
<div class="">
<div class="">On Thu, Oct 8, 2015 at 2:59 PM, Adrian Zgorzalek <span dir="ltr" class="">
<<a href="mailto:adek@fb.com" target="_blank" class="">adek@fb.com</a>></span> wrote:<br class="">
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="" style="word-wrap:break-word">Same story:
<div class=""><span class="">
<div class=""> warning: 'ownership_takes' attribute only applies to functions [-Wignored-attributes]</div>
</span>
<div class="">__attribute__((ownership_takes(__))) void f();</div>
<div class="">                       ^</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">Oh, I see, you're building in C, and the diagnostic here is broken (we give the "only applies to functions" diagnostic when it's applied to a function without a prototype). =( Aaron, can I tempt you to fix that? ;)</div>
<div class=""><br class="">
</div>
<div class="">Try this one:</div>
<div class=""><br class="">
</div>
<div class="">__attribute__((ownership_takes(__, 1))) void f(void*);<br class="">
</div>
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="" style="word-wrap:break-word">
<div class="">
<div class="">
<div class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Oct 8, 2015, at 2:52 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>> wrote:</div>
<br class="">
<div class="">
<div dir="ltr" class="">
<div class="">
<div class="">On Thu, Oct 8, 2015 at 2:45 PM, Adrian Zgorzalek <span dir="ltr" class="">
<<a href="mailto:adek@fb.com" target="_blank" class="">adek@fb.com</a>></span> wrote:<br class="">
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="" style="word-wrap:break-word"><br class="">
<div class=""><span class="">
<blockquote type="cite" class="">
<div class="">On Oct 8, 2015, at 2:17 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>> wrote:</div>
<br class="">
<div class="">
<div dir="ltr" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant:normal; font-weight:normal; letter-spacing:normal; line-height:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px">
<div class="">
<div class="">On Thu, Oct 8, 2015 at 2:10 PM, Adrian Zgorzalek via cfe-commits<span class=""> </span><span dir="ltr" class=""><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a>></span><span class=""> </span>wrote:<br class="">
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="">
<div class=""><font size="2" class=""><span class="" style="font-size:10pt">
<div class="">You are right, my bad, I thought this if covers all the cases, but <foo> part could be empty.<br class="">
<br class="">
Here is the fix<br class="">
</div>
</span></font></div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">Please add a testcase ("__attribute__((ownership_takes(__))) void f();" maybe?).</div>
</div>
</div>
</div>
</div>
</blockquote>
</span>I tried different attributes but none of them triggers the assert though. They all spit out warning:</div>
<div class="">
<div class="">warning: 'ownership_takes' attribute only applies to functions [-Wignored-attributes]</div>
<div class="">__attribute__((ownership_takes(__))) f();</div>
<div class="">                       ^</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">You missed the 'void'.</div>
<div class=""> </div>
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="" style="word-wrap:break-word">
<div class="">
<div class="">Do you have some other idea?</div>
<div class="">
<div class="">
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant:normal; font-weight:normal; letter-spacing:normal; line-height:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px">
<div class="">
<div class="">
<div class=""><br class="">
</div>
<div class="">The '&&' should go at the end of the previous line.</div>
<div class=""><br class="">
</div>
<blockquote class="" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div class="">
<div class=""><font size="2" class=""><span class="" style="font-size:10pt">
<div class=""></div>
</span></font></div>
<div class=""><font size="2" class=""><span class="" style="font-size:10pt">Adrian<br class="">
> On Oct 8, 2015, at 1:52 PM, Aaron Ballman <<a href="mailto:aaron@aaronballman.com" target="_blank" class="">aaron@aaronballman.com</a>> wrote:<br class="">
><span class=""> </span><br class="">
> On Thu, Oct 8, 2015 at 4:49 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>> wrote:<br class="">
>> On Thu, Oct 8, 2015 at 1:21 PM, Aaron Ballman <<a href="mailto:aaron@aaronballman.com" target="_blank" class="">aaron@aaronballman.com</a>><br class="">
>> wrote:<br class="">
>>><span class=""> </span><br class="">
>>> On Thu, Oct 8, 2015 at 4:16 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>><br class="">
>>> wrote:<br class="">
>>>> On Thu, Oct 8, 2015 at 12:24 PM, Aaron Ballman via cfe-commits<br class="">
>>>> <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a>> wrote:<br class="">
>>>>><span class=""> </span><br class="">
>>>>> Author: aaronballman<br class="">
>>>>> Date: Thu Oct  8 14:24:08 2015<br class="">
>>>>> New Revision: 249721<br class="">
>>>>><span class=""> </span><br class="">
>>>>> URL: <a href="https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project?rev%3D249721%26view%3Drev&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=8862f3210cdb7661e90a0d8588334d3e1cf64e92851d05bbcd2b159daf05c7dd" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project?rev%3D249721%26view%3Drev&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=8862f3210cdb7661e90a0d8588334d3e1cf64e92851d05bbcd2b159daf05c7dd</a><br class="">
>>>>> Log:<br class="">
>>>>> When mapping no_sanitize_* attributes to no_sanitize attributes, handle<br class="">
>>>>> GNU-style formatting that involves prefix and suffix underscores.<br class="">
>>>>> Cleans up<br class="">
>>>>> other usages of similar functionality.<br class="">
>>>>><span class=""> </span><br class="">
>>>>> Patch by Adrian Zgorzalek!<br class="">
>>>>><span class=""> </span><br class="">
>>>>> Modified:<br class="">
>>>>>    cfe/trunk/lib/Sema/SemaDeclAttr.cpp<br class="">
>>>>>    cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp<br class="">
>>>>>    cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp<br class="">
>>>>>    cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp<br class="">
>>>>><span class=""> </span><br class="">
>>>>> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp<br class="">
>>>>> URL:<br class="">
>>>>><span class=""> </span><br class="">
>>>>> <a href="https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=7dae8eb5cffae4493f0a6c26033810564fd7b688297fc93106a3b980f76cdd9f" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=7dae8eb5cffae4493f0a6c26033810564fd7b688297fc93106a3b980f76cdd9f</a><br class="">
>>>>> <br class="">
>>>>> <br class="">
>>>>> ==============================================================================<br class="">
>>>>> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)<br class="">
>>>>> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Thu Oct  8 14:24:08 2015<br class="">
>>>>> @@ -1308,6 +1308,17 @@ void Sema::AddAssumeAlignedAttr(SourceRa<br class="">
>>>>>             AssumeAlignedAttr(AttrRange, Context, E, OE,<br class="">
>>>>> SpellingListIndex));<br class="">
>>>>> }<br class="">
>>>>> <br class="">
>>>>> +/// Normalize the attribute, __foo__ becomes foo.<br class="">
>>>>> +/// Returns true if normalization was applied.<br class="">
>>>>> +static bool normalizeName(StringRef &AttrName) {<br class="">
>>>>> +  if (AttrName.startswith("__") && AttrName.endswith("__")) {<br class="">
>>>>> +    assert(AttrName.size() > 4 && "Name too short");<br class="">
>>>> <br class="">
>>>> <br class="">
>>>> This assert will fire on the strings __, ___, and ____, which are valid<br class="">
>>>> in<br class="">
>>>> some of the below cases.<br class="">
>>> <br class="">
>>> That assert won't fire on anything but ____ because it's &&, not ||.<br class="">
>> <br class="">
>> <br class="">
>> I disagree. __ starts with __ and ends with __. The right thing to do here<br class="">
>> is remove the assert and put back the AttrName.size() > 4 check that the<br class="">
>> callers used to have.<br class="">
> <br class="">
> Hah, you are correct. I hadn't considered that point. I agree with you. :-)<br class="">
> <br class="">
> ~Aaron<br class="">
> <br class="">
>> <br class="">
>>> I<br class="">
>>> don't think these names were intended to be valid in their uses.<br class="">
>>> However, you are correct that this will trigger assertions instead of<br class="">
>>> diagnostics. Adrian, can you investigate?<br class="">
>>> <br class="">
>>>> <br class="">
>>>>> <br class="">
>>>>> +    AttrName = AttrName.drop_front(2).drop_back(2);<br class="">
>>>>> +    return true;<br class="">
>>>>> +  }<br class="">
>>>>> +  return false;<br class="">
>>>>> +}<br class="">
>>>>> +<br class="">
>>>>> static void handleOwnershipAttr(Sema &S, Decl *D, const AttributeList<br class="">
>>>>> &AL) {<br class="">
>>>>>   // This attribute must be applied to a function declaration. The<br class="">
>>>>> first<br class="">
>>>>>   // argument to the attribute must be an identifier, the name of the<br class="">
>>>>> resource,<br class="">
>>>>> @@ -1349,11 +1360,8 @@ static void handleOwnershipAttr(Sema &S,<br class="">
>>>>> <br class="">
>>>>>   IdentifierInfo *Module = AL.getArgAsIdent(0)->Ident;<br class="">
>>>>> <br class="">
>>>>> -  // Normalize the argument, __foo__ becomes foo.<br class="">
>>>>>   StringRef ModuleName = Module->getName();<br class="">
>>>>> -  if (ModuleName.startswith("__") && ModuleName.endswith("__") &&<br class="">
>>>>> -      ModuleName.size() > 4) {<br class="">
>>>>> -    ModuleName = ModuleName.drop_front(2).drop_back(2);<br class="">
>>>>> +  if (normalizeName(ModuleName)) {<br class="">
>>>>>     Module = &S.PP.getIdentifierTable().get(ModuleName);<br class="">
>>>>>   }<br class="">
>>>>> <br class="">
>>>>> @@ -2648,9 +2656,7 @@ static void handleFormatAttr(Sema &S, De<br class="">
>>>>>   IdentifierInfo *II = Attr.getArgAsIdent(0)->Ident;<br class="">
>>>>>   StringRef Format = II->getName();<br class="">
>>>>> <br class="">
>>>>> -  // Normalize the argument, __foo__ becomes foo.<br class="">
>>>>> -  if (Format.startswith("__") && Format.endswith("__")) {<br class="">
>>>>> -    Format = Format.substr(2, Format.size() - 4);<br class="">
>>>>> +  if (normalizeName(Format)) {<br class="">
>>>>>     // If we've modified the string name, we need a new identifier for<br class="">
>>>>> it.<br class="">
>>>>>     II = &S.Context.Idents.get(Format);<br class="">
>>>>>   }<br class="">
>>>>> @@ -3131,9 +3137,7 @@ static void handleModeAttr(Sema &S, Decl<br class="">
>>>>>   IdentifierInfo *Name = Attr.getArgAsIdent(0)->Ident;<br class="">
>>>>>   StringRef Str = Name->getName();<br class="">
>>>>> <br class="">
>>>>> -  // Normalize the attribute name, __foo__ becomes foo.<br class="">
>>>>> -  if (Str.startswith("__") && Str.endswith("__"))<br class="">
>>>>> -    Str = Str.substr(2, Str.size() - 4);<br class="">
>>>>> +  normalizeName(Str);<br class="">
>>>>> <br class="">
>>>>>   unsigned DestWidth = 0;<br class="">
>>>>>   bool IntegerMode = true;<br class="">
>>>>> @@ -4533,8 +4537,10 @@ static void handleNoSanitizeAttr(Sema &S<br class="">
>>>>> <br class="">
>>>>> static void handleNoSanitizeSpecificAttr(Sema &S, Decl *D,<br class="">
>>>>>                                          const AttributeList &Attr) {<br class="">
>>>>> +  StringRef AttrName = Attr.getName()->getName();<br class="">
>>>>> +  normalizeName(AttrName);<br class="">
>>>>>   std::string SanitizerName =<br class="">
>>>>> -      llvm::StringSwitch<std::string>(Attr.getName()->getName())<br class="">
>>>>> +      llvm::StringSwitch<std::string>(AttrName)<br class="">
>>>>>           .Case("no_address_safety_analysis", "address")<br class="">
>>>>>           .Case("no_sanitize_address", "address")<br class="">
>>>>>           .Case("no_sanitize_thread", "thread")<br class="">
>>>> <br class="">
>>>> <br class="">
>>>> Is there any way we could use the spelling list index in this case<br class="">
>>>> rather<br class="">
>>>> than repeating the attribute names and __-stripping here?<br class="">
>>> <br class="">
>>> The spelling list index isn't exposed in a meaningful way (and I think<br class="">
>>> that would be an abuse of it; I want to someday remove that<br class="">
>>> implementation detail to something far more private).<br class="">
>>> <br class="">
>>> I was hoping there would be a way to use the semantic spelling, but<br class="">
>>> the issue is that this particular attribute doesn't have semantic<br class="">
>>> spellings. The NoSanitizeSpecificAttr would have one, but it has no<br class="">
>>> AST node to hang those off of. Since we explicitly document that we do<br class="">
>>> not want any additional names added to this list (see Attr.td line<br class="">
>>> 1500), I think this is a reasonable solution as-is.<br class="">
>>> <br class="">
>>> ~Aaron<br class="">
>>> <br class="">
>>>> <br class="">
>>>>> Modified: cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp<br class="">
>>>>> URL:<br class="">
>>>>> <br class="">
>>>>> <a href="https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=46b5171e8784900ffa959a20f8824d63377f6d80d0c92c69d5a271edb5d83930" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=46b5171e8784900ffa959a20f8824d63377f6d80d0c92c69d5a271edb5d83930</a><br class="">
>>>>> <br class="">
>>>>> <br class="">
>>>>> ==============================================================================<br class="">
>>>>> --- cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp (original)<br class="">
>>>>> +++ cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp Thu Oct  8<br class="">
>>>>> 14:24:08 2015<br class="">
>>>>> @@ -5,12 +5,14 @@<br class="">
>>>>> #if !__has_attribute(no_sanitize_address)<br class="">
>>>>> #error "Should support no_sanitize_address"<br class="">
>>>>> #endif<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun() NO_SANITIZE_ADDRESS;<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun_args() __attribute__((no_sanitize_address(1))); // \<br class="">
>>>>> -  // expected-error {{'no_sanitize_address' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> -<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun() NO_SANITIZE_ADDRESS;<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_alt() __attribute__((__no_sanitize_address__));<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_args() __attribute__((no_sanitize_address(1))); // \<br class="">
>>>>> +  // expected-error {{'no_sanitize_address' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> +<br class="">
>>>>> int noanal_testfn(int y) NO_SANITIZE_ADDRESS;<br class="">
>>>>> <br class="">
>>>>> int noanal_testfn(int y) {<br class="">
>>>>> <br class="">
>>>>> Modified: cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp<br class="">
>>>>> URL:<br class="">
>>>>> <br class="">
>>>>> <a href="https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=676ca5d3b6bef5b3c04a9d6861c547a35afb54f85454fc23551da843ce369b1c" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=676ca5d3b6bef5b3c04a9d6861c547a35afb54f85454fc23551da843ce369b1c</a><br class="">
>>>>> <br class="">
>>>>> <br class="">
>>>>> ==============================================================================<br class="">
>>>>> --- cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp (original)<br class="">
>>>>> +++ cfe/trunk/test/SemaCXX/attr-no-sanitize-memory.cpp Thu Oct  8<br class="">
>>>>> 14:24:08<br class="">
>>>>> 2015<br class="">
>>>>> @@ -5,12 +5,14 @@<br class="">
>>>>> #if !__has_attribute(no_sanitize_memory)<br class="">
>>>>> #error "Should support no_sanitize_memory"<br class="">
>>>>> #endif<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun() NO_SANITIZE_MEMORY;<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \<br class="">
>>>>> -  // expected-error {{'no_sanitize_memory' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> -<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun() NO_SANITIZE_MEMORY;<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_alt() __attribute__((__no_sanitize_memory__));<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \<br class="">
>>>>> +  // expected-error {{'no_sanitize_memory' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> +<br class="">
>>>>> int noanal_testfn(int y) NO_SANITIZE_MEMORY;<br class="">
>>>>> <br class="">
>>>>> int noanal_testfn(int y) {<br class="">
>>>>> <br class="">
>>>>> Modified: cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp<br class="">
>>>>> URL:<br class="">
>>>>> <br class="">
>>>>> <a href="https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=30f400a0be1c699374d1f30504fa1f190158506f984bbeac66fe6998be9fd7b7" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp?rev%3D249721%26r1%3D249720%26r2%3D249721%26view%3Ddiff&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=30f400a0be1c699374d1f30504fa1f190158506f984bbeac66fe6998be9fd7b7</a><br class="">
>>>>> <br class="">
>>>>> <br class="">
>>>>> ==============================================================================<br class="">
>>>>> --- cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp (original)<br class="">
>>>>> +++ cfe/trunk/test/SemaCXX/attr-no-sanitize-thread.cpp Thu Oct  8<br class="">
>>>>> 14:24:08<br class="">
>>>>> 2015<br class="">
>>>>> @@ -5,12 +5,14 @@<br class="">
>>>>> #if !__has_attribute(no_sanitize_thread)<br class="">
>>>>> #error "Should support no_sanitize_thread"<br class="">
>>>>> #endif<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun() NO_SANITIZE_THREAD;<br class="">
>>>>> -<br class="">
>>>>> -void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \<br class="">
>>>>> -  // expected-error {{'no_sanitize_thread' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> -<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun() NO_SANITIZE_THREAD;<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_alt() __attribute__((__no_sanitize_thread__));<br class="">
>>>>> +<br class="">
>>>>> +void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \<br class="">
>>>>> +  // expected-error {{'no_sanitize_thread' attribute takes no<br class="">
>>>>> arguments}}<br class="">
>>>>> +<br class="">
>>>>> int noanal_testfn(int y) NO_SANITIZE_THREAD;<br class="">
>>>>> <br class="">
>>>>> int noanal_testfn(int y) {<br class="">
>>>>> <br class="">
>>>>> <br class="">
>>>>> _______________________________________________<br class="">
>>>>> cfe-commits mailing list<br class="">
>>>>> <a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a><br class="">
>>>>> <a href="https://urldefense.proofpoint.com/v1/url?u=http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=76daddf3012e1755f9df59be7e195c26e1d2179d81b412635ff70771ec3f1ed5" target="_blank" class="">https://urldefense.proofpoint.com/v1/url?u=http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=kMsJztGqfQof%2FUicfGEXM78GJV6jd7CTOxlypvgU10A%3D%0A&s=76daddf3012e1755f9df59be7e195c26e1d2179d81b412635ff70771ec3f1ed5</a><br class="">
>>>> <br class="">
>>>> <br class="">
>> <br class="">
>> <br class="">
<br class="">
</span></font></div>
</div>
<br class="">
_______________________________________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a><br class="">
<a href="https://urldefense.proofpoint.com/v1/url?u=http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=ZpIyPFH5RmN0EBF%2B6Om2Hg%3D%3D%0A&m=WuZEZVUEJf2wFyWAtrTGXbBNpzW%2BZZw00tc0Mznrgws%3D%0A&s=58e8244698d21f8b1b08bb94af4fa2a7c7767fae61ec85c73e89c56a7de5b422" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a></blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</body>
</html>