zahiraam added a comment.

In D151834#4644422 <https://reviews.llvm.org/D151834#4644422>, @zahiraam wrote:

> In D151834#4644394 <https://reviews.llvm.org/D151834#4644394>, @aaron.ballman 
> wrote:
>
>> In D151834#4644391 <https://reviews.llvm.org/D151834#4644391>, @zahiraam 
>> wrote:
>>
>>> In D151834#4644378 <https://reviews.llvm.org/D151834#4644378>, 
>>> @aaron.ballman wrote:
>>>
>>>> In D151834#4644375 <https://reviews.llvm.org/D151834#4644375>, @zahiraam 
>>>> wrote:
>>>>
>>>>> In D151834#4644373 <https://reviews.llvm.org/D151834#4644373>, 
>>>>> @aaron.ballman wrote:
>>>>>
>>>>>> In D151834#4643925 <https://reviews.llvm.org/D151834#4643925>, @uabelho 
>>>>>> wrote:
>>>>>>
>>>>>>> Hi @zahiraam ,
>>>>>>>
>>>>>>> I have a couple of downstream testcases that fail with this patch.
>>>>>>> Before
>>>>>>>
>>>>>>>   > clang bbi-86364.c -lm -O3
>>>>>>>   > ./a.out
>>>>>>>
>>>>>>> passed but with the patch the assert in the program fails:
>>>>>>>
>>>>>>>   a.out: bbi-86364.c:9: int main(): Assertion `(*__errno_location ()) 
>>>>>>> == 33' failed.
>>>>>>>
>>>>>>> Is this as expected?
>>>>>>>
>>>>>>> F29200339: bbi-86364.c <https://reviews.llvm.org/F29200339>
>>>>>>
>>>>>> This seems unexpected to me and it seems to relate to whether you 
>>>>>> include errno.h or not: https://godbolt.org/z/EPWzazx9r -- @zahiraam do 
>>>>>> you have ideas as to what's going on?
>>>>>
>>>>> I haven't looked at it as I saw that the comment has been deleted. Let me 
>>>>> look into it.
>>>>
>>>> Oh, it's not the inclusion of errno.h that matters, it's the declaration 
>>>> of `__errno_location`: https://godbolt.org/z/zo4PaPEME -- it seems that 
>>>> inclusion of `__attribute__ ((__const__))` is what makes the distinction: 
>>>> https://godbolt.org/z/1bePhvaG4
>>>
>>> Yes confirming this. In the errno.h header the function is declared: extern 
>>> int *__errno_location (void) __attribute__ ((__nothrow__ )) __attribute__ 
>>> ((__const__)); 
>>> Since we can't really change the header, this needs to be changed in the 
>>> compiler?
>>
>> Yeah, I think this is a bug with your patch, but I'm not certain where. I 
>> suspect the changes to CGBuiltin.cpp are what are causing this issue -- CC 
>> @efriedma and @rjmccall as they might have ideas.
>
> I think the issue comes from here: 
> https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/CGBuiltin.cpp#L2365

This looks like it's happening only for -Oi (i>=1) and on Linux only?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D151834/new/

https://reviews.llvm.org/D151834

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to