[Bug rtl-optimization/83162] [6/7/8 Regression] x86-64 -Wclobbered issuing more false alarms (regression)
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Nov 27 08:49:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83162
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic, ra
CC| |jakub at gcc dot gnu.org,
| |rguenth at gcc dot gnu.org
Component|c |rtl-optimization
Known to work| |4.8.5
Target Milestone|--- |7.3
Summary|x86-64 -Wclobbered issuing |[6/7/8 Regression] x86-64
|more false alarms |-Wclobbered issuing more
|(regression) |false alarms (regression)
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hm, so the warning just does
static void
setjmp_args_warning (bitmap setjmp_crosses)
{
tree decl;
for (decl = DECL_ARGUMENTS (current_function_decl);
decl; decl = DECL_CHAIN (decl))
if (DECL_RTL (decl) != 0
&& REG_P (DECL_RTL (decl))
&& regno_clobbered_at_setjmp (setjmp_crosses, REGNO (DECL_RTL (decl))))
warning (OPT_Wclobbered,
"argument %q+D might be clobbered by %<longjmp%> or %<vfork%>",
decl);
and thus looks whether the PARM_DECL is expanded as a register and is
regno_clobbered_at_setjmp. But it seems to fail to exclude call clobbered
registers as we can see we spill those regs:
module_vec_set:
.LFB0:
.cfi_startproc
subq $40, %rsp
.cfi_def_cfa_offset 48
movq %rdi, 8(%rsp)
movl $jb, %edi
movq %rsi, 16(%rsp)
movq %rdx, 24(%rsp)
call _setjmp
testl %eax, %eax
jne .L1
xorl %eax, %eax
cmpb $0, module_assertions(%rip)
movq 24(%rsp), %rcx
movq 16(%rsp), %rsi
...
/* True if register REGNO was alive at a place where `setjmp' was
called and was set more than once or is an argument. Such regs may
be clobbered by `longjmp'. */
static bool
regno_clobbered_at_setjmp (bitmap setjmp_crosses, int regno)
I don't really understand what this is about. At least call clobbered
regs should get spilled so this should be about callee saved ones only?
More information about the Gcc-bugs
mailing list