This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/25845] want optional warning for non-constant declarations that could be constant
- From: "sigra at home dot se" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Jan 2006 19:29:25 -0000
- Subject: [Bug c++/25845] want optional warning for non-constant declarations that could be constant
- References: <bug-25845-315@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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".
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25845