[Bug middle-end/86284] New: Insert trap instruction in place of missing return statement on dodgy code
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 22 16:51:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86284
Bug ID: 86284
Summary: Insert trap instruction in place of missing return
statement on dodgy code
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: ktkachov at gcc dot gnu.org
Target Milestone: ---
Consider a non-void function that's missing a return statement:
int test()
{
volatile int i = 0;
}
g++ at -O2 for aarch64 will generate:
_Z4testv:
.LFB0:
.cfi_startproc
sub sp, sp, #16
.cfi_def_cfa_offset 16
str wzr, [sp, 12]
.cfi_endproc
.LFE0:
.size _Z4testv, .-_Z4testv
No return statement. That's fine (the code is undefined), and GCC even warns
about it.
We got a suggestion that GCC could insert a trap instruction at the end of such
a function so that at runtime we get a trap rather than the execution running
off into the abyss.
GCC already inserts traps in unreachable paths in gimple-ssa-isolate-paths.c,
so maybe we can also do this when we already detect that a function is broken
in this way?
More information about the Gcc-bugs
mailing list