[Bug c++/59813] tail-call elimination didn't fire for left-shift of char to cout

clyon at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 9 12:50:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59813

Christophe Lyon <clyon at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clyon at gcc dot gnu.org

--- Comment #9 from Christophe Lyon <clyon at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #8)
> Author: jakub
> Date: Wed May  8 17:06:46 2019
> New Revision: 271013
> 
> URL: https://gcc.gnu.org/viewcvs?rev=271013&root=gcc&view=rev
> Log:
> 	PR c++/59813
> 	PR tree-optimization/89060
> 	* tree-ssa-live.h (live_vars_map): New typedef.
> 	(compute_live_vars, live_vars_at_stmt, destroy_live_vars): Declare.
> 	* tree-ssa-live.c: Include gimple-walk.h and cfganal.h.
> 	(struct compute_live_vars_data): New type.
> 	(compute_live_vars_visit, compute_live_vars_1, compute_live_vars,
> 	live_vars_at_stmt, destroy_live_vars): New functions.
> 	* tree-tailcall.c: Include tree-ssa-live.h.
> 	(live_vars, live_vars_vec): New global variables.
> 	(find_tail_calls): Perform variable life analysis before punting.
> 	(tree_optimize_tail_calls_1): Clean up live_vars and live_vars_vec.
> 	* tree-inline.h (struct copy_body_data): Add eh_landing_pad_dest
> 	member.
> 	* tree-inline.c (add_clobbers_to_eh_landing_pad): Remove BB argument.
> 	Perform variable life analysis to select variables that really need
> 	clobbers added.
> 	(copy_edges_for_bb): Don't call add_clobbers_to_eh_landing_pad here,
> 	instead set id->eh_landing_pad_dest and assert it is the same.
> 	(copy_cfg_body): Call it here if id->eh_landing_pad_dest is non-NULL.
> 
> 	* gcc.dg/tree-ssa/pr89060.c: New test.
> 
> Added:
>     trunk/gcc/testsuite/gcc.dg/tree-ssa/pr89060.c
> Modified:
>     trunk/gcc/ChangeLog
>     trunk/gcc/testsuite/ChangeLog
>     trunk/gcc/tree-inline.c
>     trunk/gcc/tree-inline.h
>     trunk/gcc/tree-ssa-live.c
>     trunk/gcc/tree-ssa-live.h
>     trunk/gcc/tree-tailcall.c


This patch introduced regressions in libstdc++ on aarch64, I'm now seeing these
failures:
    18_support/exception_ptr/lifespan.cc execution test
    18_support/nested_exception/throw_with_nested.cc execution test
    18_support/uncaught_exception/14026.cc execution test
    20_util/specialized_algorithms/memory_management_tools/1.cc execution test
    20_util/unsynchronized_pool_resource/allocate.cc execution test
    20_util/variant/exception_safety.cc execution test
    20_util/variant/run.cc execution test
    21_strings/basic_string/cons/char/69092.cc execution test
    22_locale/locale/cons/12438.cc execution test
    22_locale/numpunct/members/pod/2.cc execution test
    23_containers/deque/cons/2.cc execution test
    23_containers/deque/requirements/exception/basic.cc execution test
    23_containers/deque/requirements/exception/propagation_consistent.cc
execution test
    23_containers/forward_list/requirements/exception/basic.cc execution test
    23_containers/forward_list/requirements/exception/propagation_consistent.cc
execution test
    23_containers/list/operations/78389.cc execution test
    23_containers/list/requirements/exception/basic.cc execution test
    23_containers/list/requirements/exception/propagation_consistent.cc
execution test
    23_containers/map/requirements/exception/basic.cc execution test
    23_containers/map/requirements/exception/propagation_consistent.cc
execution test
    23_containers/multimap/requirements/exception/basic.cc execution test
    23_containers/multimap/requirements/exception/propagation_consistent.cc
execution test
    23_containers/multiset/requirements/exception/basic.cc execution test
    23_containers/multiset/requirements/exception/propagation_consistent.cc
execution test
    23_containers/set/requirements/exception/basic.cc execution test
    23_containers/set/requirements/exception/propagation_consistent.cc
execution test
    23_containers/unordered_map/requirements/exception/basic.cc execution test
   
23_containers/unordered_map/requirements/exception/propagation_consistent.cc
execution test
    23_containers/unordered_multimap/requirements/exception/basic.cc execution
test
   
23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
execution test
    23_containers/unordered_multiset/insert/hash_policy.cc execution test
    23_containers/unordered_multiset/requirements/exception/basic.cc execution
test
   
23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
execution test
    23_containers/unordered_set/insert/hash_policy.cc execution test
    23_containers/unordered_set/max_load_factor/robustness.cc execution test
    23_containers/unordered_set/requirements/exception/basic.cc execution test
   
23_containers/unordered_set/requirements/exception/propagation_consistent.cc
execution test
    23_containers/vector/capacity/2.cc execution test
    23_containers/vector/capacity/resize/strong_guarantee.cc execution test
    23_containers/vector/cons/4.cc execution test
    23_containers/vector/cons/86292.cc execution test
    23_containers/vector/modifiers/push_back/strong_guarantee.cc execution test
    23_containers/vector/requirements/exception/basic.cc execution test
    23_containers/vector/requirements/exception/propagation_consistent.cc
execution test
    25_algorithms/stable_partition/mem_check.cc execution test
    25_algorithms/stable_sort/mem_check.cc execution test
    27_io/basic_filebuf/close/81256.cc execution test
    27_io/basic_filebuf/cons/wchar_t/10132-1.cc execution test
    27_io/basic_filebuf/overflow/char/13858.cc execution test
    27_io/basic_filebuf/overflow/wchar_t/13858.cc execution test
    27_io/basic_filebuf/seekoff/wchar_t/3.cc execution test
    27_io/basic_filebuf/seekpos/wchar_t/1.cc execution test
    27_io/basic_filebuf/sync/char/9182-1.cc execution test
    27_io/basic_fstream/53984.cc execution test
    27_io/basic_istream/exceptions/char/9561.cc execution test
    27_io/basic_istream/exceptions/wchar_t/9561.cc execution test
    27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
execution test
   
27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
execution test
    27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
execution test
    27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
execution test
    27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc execution test
    27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc execution test
    27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc execution test
    27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/exceptions/char/9561.cc execution test
    27_io/basic_ostream/exceptions/wchar_t/9561.cc execution test
    27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc execution test
    27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
execution test
    27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc execution test
    27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
execution test
    27_io/basic_ostream/inserters_character/char/9555-oc.cc execution test
    27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc execution test
    27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
execution test
    27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
execution test
    27_io/basic_ostream/put/char/1.cc execution test
    27_io/basic_ostream/put/wchar_t/1.cc execution test
    27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc execution test
    27_io/basic_ostream/write/char/1.cc execution test
    27_io/basic_ostream/write/wchar_t/1.cc execution test
    27_io/ios_base/failure/dual_abi.cc execution test
    30_threads/async/except.cc execution test
    ext/enc_filebuf/char/13189.cc execution test
    ext/enc_filebuf/wchar_t/13189.cc execution test
    ext/pb_ds/example/hash_illegal_resize.cc execution test
    ext/vstring/requirements/exception/propagation_consistent.cc execution test
    libstdc++-prettyprinters/cxx17.cc execution test


More information about the Gcc-bugs mailing list