This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/41518] New: copy initialization of volatile objects
- From: "wolfgang dot roehrl at gi-de dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Sep 2009 12:18:27 -0000
- Subject: [Bug c++/41518] New: copy initialization of volatile objects
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Dear all,
I would like to post a fault report for the GNU C/C++ compiler 4.3.0.
Used invokation line for the GNU C++ compiler:
gcc -c -x c++ -ansi -Wall -Werror -mcpu=603e -fverbose-asm -mbig
-mmultiple -mstring -mstrict-align -meabi -msdata -fno-common
-fno-exceptions -fno-rtti -O3 -fno-section-anchors
-I<different include paths>
-D<different #define's>
X.CPP -oX.O
// example program
struct X
{
X (void*);
};
int i;
volatile X ax1(&i);
volatile X ax2 = &i; // <--- line 9
const volatile X bx1(&i);
const volatile X bx2 = &i; // <--- line 12
GNU rejects the code fragment with the following error messages:
X.CPP:9: error: no matching function for call to 'X::X(volatile X)'
X.CPP:3: note: candidates are: X::X(void*)
X.CPP:2: note: X::X(const X&)
X.CPP:12: error: no matching function for call to 'X::X(const volatile X)'
X.CPP:3: note: candidates are: X::X(void*)
X.CPP:2: note: X::X(const X&)
The initializations in lines 9 and 12 are copy-initializations with a call to
the converting constructor "X::X (void*)". The result of this call is a
temporary of type "X" (and not of type "[const] volatile X"), which can be
copied with the implicitly-generated copy constructor "X::X (const X&)".
BTW, the Comeau online compiler accepts the code above.
Kind regards
W. Roehrl
--
Summary: copy initialization of volatile objects
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wolfgang dot roehrl at gi-de dot com
GCC build triplet: athlon-redhat-linux
GCC host triplet: i686-pc-mingw32
GCC target triplet: powerpc-rtems4.9
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41518