This is the mail archive of the gcc-bugs@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]

[Bug c++/41518] New: copy initialization of volatile objects


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


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