This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PR c++/5645 gcc warns that pure virtual class not explicitly initialized


On 13/11/2007, Jason Merrill <jason@redhat.com> wrote:
> Manuel López-Ibáñez wrote:
> > TYPE_HAS_CONSTRUCTOR (BINFO_TYPE (subobject)) is 1.
>
> That seems wrong to me.  That's being set in
> add_implicitly_declared_members, but I don't see why; the macro is
> supposed to indicate whether or not there are any user-declared constructors

That is not a recent thing:

 22869   mmitchel   /* Copy constructor.  */
 28677   mmitchel   if (! TYPE_HAS_INIT_REF (t) && ! TYPE_FOR_JAVA (t))
 22869   mmitchel     {
 84851   mmitchel       TYPE_HAS_INIT_REF (t) = 1;
 84851   mmitchel       TYPE_HAS_CONST_INIT_REF (t) = !cant_have_const_cctor;
 84851   mmitchel       CLASSTYPE_LAZY_COPY_CTOR (t) = 1;
 84851   mmitchel       TYPE_HAS_CONSTRUCTOR (t) = 1;
 22869   mmitchel     }


> What happens if you remove the line that sets it for the
> implicit copy ctor?
>

Bootstrap breaks badly:

/bin/sh ../libtool --tag CXX --mode=compile
/home/manuel/130148M/build/./gcc/xgcc -shared-libgcc
-B/home/manuel/130148M/build/./gcc -nostdinc++
-L/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/src
-L/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/home/manuel/./130148M/install/x86_64-unknown-linux-gnu/bin/
-B/home/manuel/./130148M/install/x86_64-unknown-linux-gnu/lib/
-isystem /home/manuel/./130148M/install/x86_64-unknown-linux-gnu/include
-isystem /home/manuel/./130148M/install/x86_64-unknown-linux-gnu/sys-include
 -I/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/include
-I/home/manuel/src/trunk/libstdc++-v3/libsupc++
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once  -ffunction-sections -fdata-sections
-g -O2   -D_GNU_SOURCE  -c -o codecvt_members.lo codecvt_members.cc
libtool: compile:  /home/manuel/130148M/build/./gcc/xgcc
-shared-libgcc -B/home/manuel/130148M/build/./gcc -nostdinc++
-L/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/src
-L/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/home/manuel/./130148M/install/x86_64-unknown-linux-gnu/bin/
-B/home/manuel/./130148M/install/x86_64-unknown-linux-gnu/lib/
-isystem /home/manuel/./130148M/install/x86_64-unknown-linux-gnu/include
-isystem /home/manuel/./130148M/install/x86_64-unknown-linux-gnu/sys-include
-I/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/home/manuel/130148M/build/x86_64-unknown-linux-gnu/libstdc++-v3/include
-I/home/manuel/src/trunk/libstdc++-v3/libsupc++
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-g -O2 -D_GNU_SOURCE -c codecvt_members.cc  -fPIC -DPIC -o
.libs/codecvt_members.o
codecvt_members.cc: In member function 'virtual
std::codecvt_base::result std::codecvt<wchar_t, char,
__mbstate_t>::do_out(mbstate_t&, const wchar_t*, const wchar_t*, const
wchar_t*&, char*, char*, char*&) const':
codecvt_members.cc:56: error: constructor syntax used, but no
constructor declared for type 'mbstate_t'
codecvt_members.cc:56: error: cannot convert '__mbstate_t' to 'int' in
initialization
codecvt_members.cc:56: warning: missing initializer for member
'__mbstate_t::__value'
codecvt_members.cc: In member function 'virtual
std::codecvt_base::result std::codecvt<wchar_t, char,
__mbstate_t>::do_in(mbstate_t&, const char*, const char*, const
char*&, wchar_t*, wchar_t*, wchar_t*&) const':
codecvt_members.cc:121: error: constructor syntax used, but no
constructor declared for type 'mbstate_t'
codecvt_members.cc:121: error: cannot convert '__mbstate_t' to 'int'
in initialization
codecvt_members.cc:121: warning: missing initializer for member
'__mbstate_t::__value'
codecvt_members.cc: In member function 'virtual int
std::codecvt<wchar_t, char, __mbstate_t>::do_length(mbstate_t&, const
char*, const char*, size_t) const':
codecvt_members.cc:190: error: constructor syntax used, but no
constructor declared for type 'mbstate_t'
codecvt_members.cc:190: error: cannot convert '__mbstate_t' to 'int'
in initialization
codecvt_members.cc:190: warning: missing initializer for member
'__mbstate_t::__value'


Ideas?

Manu.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]