re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)
authorJakub Jelinek <jakub@redhat.com>
Mon, 20 May 2019 21:33:46 +0000 (23:33 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 20 May 2019 21:33:46 +0000 (23:33 +0200)
commit500e4868bf5c89a3136fb329293872d29632ffad
tree0176007982f06d3562abe18ff9dd21f58bf4643a
parent3e03ed662651dada81e39d8850da82e80f54fd2d
re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)

PR c++/59813
PR target/90418
* function.h (struct function): Add calls_eh_return member.
* gimplify.c (gimplify_call_expr): Set cfun->calls_eh_return when
gimplifying __builtin_eh_return call.
* tree-inline.c (initialize_cfun): Copy calls_eh_return from src_cfun
to cfun.
(expand_call_inline): Or in src_cfun->calls_eh_return into
dst_cfun->calls_eh_return.
* tree-tailcall.c (suitable_for_tail_call_opt_p): Return false if
cfun->calls_eh_return.
* lto-streamer-in.c (input_struct_function_base): Read calls_eh_return.
* lto-streamer-out.c (output_struct_function_base): Write
calls_eh_return.

From-SVN: r271440
gcc/ChangeLog
gcc/function.h
gcc/gimplify.c
gcc/lto-streamer-in.c
gcc/lto-streamer-out.c
gcc/tree-inline.c
gcc/tree-tailcall.c