On Fri, Jun 16, 2017 at 9:38 AM, Richard Biener <richard.guent...@gmail.com> wrote: > On Thu, Jun 15, 2017 at 11:31 PM, Jason Merrill <ja...@redhat.com> wrote: >> On Thu, Jun 15, 2017 at 12:26 PM, Martin Sebor <mse...@gmail.com> wrote: >>> On 06/12/2017 03:36 PM, Jason Merrill wrote: >>>> >>>> On 06/08/2017 01:25 PM, Martin Sebor wrote: >>>>> >>>>> + if (TREE_CHAIN (DECL_ARGUMENTS (f))) >>>>> + { >>>>> + /* Skip constructors that aren't copy or move ctors. */ >>>>> + if (!copy_fn_p (f)) >>>>> + continue; >>>>> + >>>>> + cpy_or_move_ctor_p = true; >>>>> + } >>>>> + else >>>>> + { >>>>> + /* Constructor is a default ctor. */ >>>>> + cpy_or_move_ctor_p = false; >>>>> + } >>>> >>>> A default constructor can have parameters, so long as they have default >>>> arguments. You can use default_ctor_p to test for a default constructor. >>> >>> Thank you for the suggestion. Attached is an incremental diff >>> with this tweak plus a test for it. >>> >>> The code above has been there in the last three revisions of >>> the patch >> >> Yeah, I don't always notice everything :) >> >>> are there any other changes you'd like me to make? >> >> No, the patch is OK with this change. > > This broke build with GCC 4.8 as host compiler: > > g++ -fno-PIE -c -g -DIN_GCC -fno-exceptions -fno-rtti > -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings > -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic > -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings > -fno-common -DHAVE_CONFIG_H -I. -I. > -I/space/rguenther/src/svn/early-lto-debug/gcc > -I/space/rguenther/src/svn/early-lto-debug/gcc/. > -I/space/rguenther/src/svn/early-lto-debug/gcc/../include > -I/space/rguenther/src/svn/early-lto-debug/gcc/../libcpp/include > -I/space/rguenther/src/svn/early-lto-debug/gcc/../libdecnumber > -I/space/rguenther/src/svn/early-lto-debug/gcc/../libdecnumber/bid > -I../libdecnumber > -I/space/rguenther/src/svn/early-lto-debug/gcc/../libbacktrace -o > tree-switch-conversion.o -MT tree-switch-conversion.o -MMD -MP -MF > ./.deps/tree-switch-conversion.TPo > /space/rguenther/src/svn/early-lto-debug/gcc/tree-switch-conversion.c > /space/rguenther/src/svn/early-lto-debug/gcc/tree-switch-conversion.c: > In function ‘void emit_case_bit_tests(gswitch*, tree, tree, tree, > tree)’: > /space/rguenther/src/svn/early-lto-debug/gcc/tree-switch-conversion.c:271:53: > warning: missing initializer for member ‘case_bit_test::mask’ > [-Wmissing-field-initializers] > struct case_bit_test test[MAX_CASE_BIT_TESTS] = { }; > ^ > ... > /space/rguenther/src/svn/early-lto-debug/gcc/tree-switch-conversion.c:271:53: > internal compiler error: in gimplify_init_constructor, at > gimplify.c:4271 > Please submit a full bug report, > with preprocessed source if appropriate. > See <http://bugs.opensuse.org/> for instructions. > Makefile:1102: recipe for target 'tree-switch-conversion.o' failed > make: *** [tree-switch-conversion.o] Error 1 > > Please fix.
Using struct case_bit_test test[MAX_CASE_BIT_TESTS] = { {} }; avoids the ICE, the warning persists (not sure if correctly or not). I'll commit this workaround if it survives stage2/3 -Werror. Richard. > Richard. > >> Jason