Q: Dangerous warning.

Sergei Organov osv@javad.ru
Sat Jan 23 07:02:00 GMT 1999


I think this is egcs minor bug with compiler generated copy
constructors/assignment operators:

$ cat volwarn.cc
struct A  { int i; };
extern A a;
extern A volatile va;
void foo() { a = va; }
$ c++ -c -Wall volwarn.cc
volwarn.cc: In function `void foo()':
volwarn.cc:4: warning: conversion from `volatile A' to `const A &' discards volatile
volwarn.cc:1: warning: in passing argument 1 of `A::operator =(const A &)'

As you see compiler generates (apparently wrong) assignment operator
and then warns me. So the questions are:

1. Is this egcs bug or C++ Standard requirement?

2. Can I safely ignore the warning (i.e. does egcs still consider
   access to 'va' variable as volatile)?

Thank you in advance.

Sergei Organov.

More information about the Gcc-bugs mailing list