On Tue, Mar 15, 2016 at 12:32 PM, Jason Merrill <ja...@redhat.com> wrote: > On 03/15/2016 12:00 PM, H.J. Lu wrote: >> >> On Tue, Mar 15, 2016 at 8:35 AM, Jason Merrill <ja...@redhat.com> wrote: >>> >>> I'm concerned about how this patch changes both target-independent code >>> and >>> target-specific code, with a passing remark that other targets might need >>> to >>> make similar changes. I'm also concerned about the effect of this on >>> other >>> languages that might not want the same change. So, here's an alternative >>> patch that implements the change in the front end (and includes your >>> testcases, thanks!). >>> >>> Thoughts? >> >> >> On x86-64, I got >> >> >> /export/gnu/import/git/sources/gcc/libstdc++-v3/src/c++11/cxx11-shim_facets.cc:273:23: >> error: empty class ‘std::__facet_shims::other_abi {aka >> std::integral_constant<bool, true>}’ parameter passing ABI changes in >> -fabi-version=10 (GCC 6) [-Werror=abi] >> __collate_transform(other_abi{}, _M_get(), st, lo, hi); > > > Right, need to remove the -Werror=abi bit from the patch until Jonathan > updates libstdc++. > > Jason >
I got FAIL: g++.dg/abi/pr60336-1.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_type FAIL: g++.dg/abi/pr60336-5.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_type FAIL: g++.dg/abi/pr60336-6.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_type FAIL: g++.dg/abi/pr60336-7.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_type FAIL: g++.dg/abi/pr60336-9.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_type FAIL: g++.dg/abi/pr68355.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx17integral_constantIbLb1EE They are expected since get_ref_base_and_extent needs to be changed to set bitsize to 0 for empty types so that when ref_maybe_used_by_call_p_1 calls get_ref_base_and_extent to get 0 as the maximum size on empty type. Otherwise, find_tail_calls won't perform tail call optimization for functions with empty type parameters. -- H.J.