This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: [Bug c++/25845] want optional warning for non-constant declarations that could be constant
- From: Gabriel Dos Reis <gdr at cs dot tamu dot edu>
- To: gcc-bugzilla at gcc dot gnu dot org
- Cc: gcc-bugs at gcc dot gnu dot org
- Date: 18 Jan 2006 14:35:22 -0600
- Subject: Re: [Bug c++/25845] want optional warning for non-constant declarations that could be constant
- References: <bug-25845-315@http.gcc.gnu.org/bugzilla/> <20060118192925.11342.qmail@sourceware.org>
"sigra at home dot se" <gcc-bugzilla@gcc.gnu.org> writes:
| ------- Comment #8 from sigra at home dot se 2006-01-18 19:29 -------
| > On Jan 18, 2006, at 11:19 AM, pcarlini at suse dot de wrote:
| >
| > > ------- Comment #4 from pcarlini at suse dot de 2006-01-18 16:19
| > > -------
| > > (In reply to comment #3)
| > >> const does nothing when it comes to local variables except for not
| > >> letting you
| > >> touch it in other expressions. It does nothing for optimizations or
| > >> anything
| > >> else.
| > >
| > > This last point is not obvious at all, in my opinion. Why not? In
| > > principle,
| > > certainly const-ness *can* help optimizers one way or the other. Is
| > > this just a
| > > current limitation? A design choice? Anything in the standard making
| > > that
| > > tricky? I would like to know more.
| >
| >
| > int f(const int *a, int *b)
| > {
| > *b = 1;
| > return *a;
| > }
| >
| > a and b can alias and there is no way around that at all because that is
| > what the C++ standard says.
|
| In this case the compiler should warn because a could be declared "const int *
| const" and b could be declared "int * const".
It does not make any sense to require the compiler to give a warning
in that case.
-- Gaby