On Mon, 31 Mar 2025 12:57:38 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:

>> Hi all,
>> File src/java.base/share/native/libjli/java.c compile error: control reaches 
>> end of non-void function [-Werror=return-type] with gcc options 
>> -fsanitize=address -O0. The function int JavaMain(void* _args) in this file 
>> will execute return ret in LEAVE() macro, but gcc with -O0 is not smart 
>> enough to recognized that the function already has return statement before 
>> at the end of function. It's a gcc bug which has been recorded by 
>> [80959](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80959), and below code 
>> snippet can demonstrate the gcc bug. I think we should disable return-type 
>> gcc warning for java.c file before the gcc bug has been fixed. Risk is low.
>> 
>> 
>>> cat java.c
>> char a() {
>>   return 0;
>>   int b;
>>   if (a(&b))
>>     return 0;
>> }
>> 
>>> gcc -O0 -Wall -Wextra -Werror -O0 -c java.c -fsanitize=address
>> java.c: In function ‘a’:
>> java.c:6:1: error: control reaches end of non-void function 
>> [-Werror=return-type]
>>     6 | }
>>       | ^
>> cc1: all warnings being treated as errors
>
> While I normally advocate using DISABLE_WARNING in makefiles instead of 
> pragmas, in this particular case I wonder if not a pragma in the `LEAVE` 
> macro would be better?

Thanks for the reviews @magicus @TheShermanTanker

-------------

PR Comment: https://git.openjdk.org/jdk/pull/24318#issuecomment-2771787344

Reply via email to