Compiling GCC With a C++ Compiler (g++)

Gabriel Dos Reis gdr@cs.tamu.edu
Wed Oct 13 18:20:00 GMT 2004


Andreas Schwab <schwab@suse.de> writes:

| Gabriel Dos Reis <gdr@cs.tamu.edu> writes:
| 
| > Look at the current implementation of build_string
| >
| >     tree
| >     build_string (int len, const char *str)
| >     {
| >       tree s;
| >       size_t length;
| [...]
| >       s = ggc_alloc_tree (length);
| >
| [...]
| >
| >       return s;
| >     }
| >
| > The lvalue "s" is just nonmodifiable aoocording to the above language.
| 
| (You probably mean "*s", since s is not const qualified). 

Yes.

| But the object
| returned by ggc_alloc_tree _is_ modfiable.  And this is what matters here.
| Just like
| 
|   const int *foo() { return malloc (sizeof (int)); }
| 
| returns a pointer to a modfiable object, although the lvalue *foo() isn't.

You left too much out of my message.  As I'm in hurry to get
something else done, I'll return back to you later, but in the
meantime, let me point out one thing:

   Assume you can modify *s, then you still don't get anything useful
   from Geoff's change, because the string could be modified anyway.
   Therefore the "const" is there only to damage work done in the
   direction of being able to compile GCC source with a C++ compiler.

-- Gaby



More information about the Gcc mailing list