Skip to content

Commit a60c76e

Browse files
authored
[src] Silence GCC 12 warnings about dangling pointers (JuliaLang#45617)
* [src] Silence GCC 12 warnings about dangling pointers * [src] Compile with `-Wno-pragmas` to allow pragrams accepted only by different compilers * [src] Use pragma only when relevant (GCC >= 12) Using `-Wno-pragmas` would still cause issues when building with `-Werror`.
1 parent 51c8812 commit a60c76e

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/init.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,12 @@ void jl_init_stack_limits(int ismaster, void **stack_lo, void **stack_hi)
7272
pthread_attr_getstack(&attr, &stackaddr, &stacksize);
7373
pthread_attr_destroy(&attr);
7474
*stack_lo = (void*)stackaddr;
75+
#pragma GCC diagnostic push
76+
#if defined(_COMPILER_GCC_) && __GNUC__ >= 12
77+
#pragma GCC diagnostic ignored "-Wdangling-pointer"
78+
#endif
7579
*stack_hi = (void*)&stacksize;
80+
#pragma GCC diagnostic pop
7681
return;
7782
# elif defined(_OS_DARWIN_)
7883
extern void *pthread_get_stackaddr_np(pthread_t thread);
@@ -104,7 +109,12 @@ void jl_init_stack_limits(int ismaster, void **stack_lo, void **stack_hi)
104109
// We intentionally leak a stack address here core.StackAddressEscape
105110
# ifndef __clang_analyzer__
106111
*stack_hi = (void*)&stacksize;
112+
#pragma GCC diagnostic push
113+
#if defined(_COMPILER_GCC_) && __GNUC__ >= 12
114+
#pragma GCC diagnostic ignored "-Wdangling-pointer"
115+
#endif
107116
*stack_lo = (void*)((char*)*stack_hi - stacksize);
117+
#pragma GCC diagnostic pop
108118
# else
109119
*stack_hi = 0;
110120
*stack_lo = 0;
@@ -722,8 +732,13 @@ JL_DLLEXPORT void julia_init(JL_IMAGE_SEARCH rel)
722732

723733
jl_gc_init();
724734
jl_ptls_t ptls = jl_init_threadtls(0);
735+
#pragma GCC diagnostic push
736+
#if defined(_COMPILER_GCC_) && __GNUC__ >= 12
737+
#pragma GCC diagnostic ignored "-Wdangling-pointer"
738+
#endif
725739
// warning: this changes `jl_current_task`, so be careful not to call that from this function
726740
jl_task_t *ct = jl_init_root_task(ptls, stack_lo, stack_hi);
741+
#pragma GCC diagnostic pop
727742
JL_GC_PROMISE_ROOTED(ct);
728743
_finish_julia_init(rel, ptls, ct);
729744
}

0 commit comments

Comments
 (0)