Message ID | CAAgBjMnCKFPthT-6zs+hm=WuWJEEA4ntYyiEyT3jq-Sp4Mtspg@mail.gmail.com |
---|---|
State | New |
Headers | show |
Series | [tree.c] Replace cast to (char *) by const_cast<char *> | expand |
Hi Prathamesh, > I am getting the following build error with trunk: > ../../gcc/gcc/tree.c: In member function ‘void > escaped_string::escape(const char*)’: > ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to > type ‘char*’ casts away qualifiers [-Werror=cast-qual] > m_str = (char *) unescaped; > ^~~~~~~~~ > I think this is caused by r261697 in tree.c: > m_str = (char *) unescaped; > > The patch changes it to const_cast<char *> (unescaped) which fixes the > build for me. I cannot approve this patch, but I can say thanks very much for catching this problem and proposing a fix. I guess that I must be using an old version of g++ for my testing as this error did not show up. :-( Cheers Nick
On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: > Hi Prathamesh, > >> I am getting the following build error with trunk: >> ../../gcc/gcc/tree.c: In member function ‘void >> escaped_string::escape(const char*)’: >> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to >> type ‘char*’ casts away qualifiers [-Werror=cast-qual] >> m_str = (char *) unescaped; >> ^~~~~~~~~ >> I think this is caused by r261697 in tree.c: >> m_str = (char *) unescaped; >> >> The patch changes it to const_cast<char *> (unescaped) which fixes the >> build for me. > > I cannot approve this patch, but I can say thanks very much for catching > this problem and proposing a fix. I guess that I must be using an old > version of g++ for my testing as this error did not show up. :-( Hi Nick, Thanks for confirming. I went ahead and committed the patch in r261700 since I guess it's trivial enough to fit under the "obvious" rule. Thanks, Prathamesh > > Cheers > Nick > >
On 06/18/2018 08:08 AM, Prathamesh Kulkarni wrote: > On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: >> Hi Prathamesh, >> >>> I am getting the following build error with trunk: >>> ../../gcc/gcc/tree.c: In member function ‘void >>> escaped_string::escape(const char*)’: >>> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to >>> type ‘char*’ casts away qualifiers [-Werror=cast-qual] >>> m_str = (char *) unescaped; >>> ^~~~~~~~~ >>> I think this is caused by r261697 in tree.c: >>> m_str = (char *) unescaped; >>> >>> The patch changes it to const_cast<char *> (unescaped) which fixes the >>> build for me. >> >> I cannot approve this patch, but I can say thanks very much for catching >> this problem and proposing a fix. I guess that I must be using an old >> version of g++ for my testing as this error did not show up. :-( > Hi Nick, > Thanks for confirming. I went ahead and committed the patch in r261700 > since I guess it's trivial enough to fit under the "obvious" rule. Yes. Thanks for taking care of it. jeff
On Mon, Jun 18, 2018 at 08:34:28AM -0600, Jeff Law wrote: > On 06/18/2018 08:08 AM, Prathamesh Kulkarni wrote: > > On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: > >> Hi Prathamesh, > >> > >>> I am getting the following build error with trunk: > >>> ../../gcc/gcc/tree.c: In member function ‘void > >>> escaped_string::escape(const char*)’: > >>> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to > >>> type ‘char*’ casts away qualifiers [-Werror=cast-qual] > >>> m_str = (char *) unescaped; > >>> ^~~~~~~~~ > >>> I think this is caused by r261697 in tree.c: > >>> m_str = (char *) unescaped; > >>> > >>> The patch changes it to const_cast<char *> (unescaped) which fixes the > >>> build for me. > >> > >> I cannot approve this patch, but I can say thanks very much for catching > >> this problem and proposing a fix. I guess that I must be using an old > >> version of g++ for my testing as this error did not show up. :-( > > Hi Nick, > > Thanks for confirming. I went ahead and committed the patch in r261700 > > since I guess it's trivial enough to fit under the "obvious" rule. > Yes. > > Thanks for taking care of it. Shouldn't we use m_str = CONST_CAST (char *, unescaped); instead? That is what most similar spots use. Jakub
On Mon, Jun 18, 2018 at 12:41 PM, Jakub Jelinek <jakub@redhat.com> wrote: > On Mon, Jun 18, 2018 at 08:34:28AM -0600, Jeff Law wrote: >> On 06/18/2018 08:08 AM, Prathamesh Kulkarni wrote: >> > On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: >> >> Hi Prathamesh, >> >> >> >>> I am getting the following build error with trunk: >> >>> ../../gcc/gcc/tree.c: In member function ‘void >> >>> escaped_string::escape(const char*)’: >> >>> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to >> >>> type ‘char*’ casts away qualifiers [-Werror=cast-qual] >> >>> m_str = (char *) unescaped; >> >>> ^~~~~~~~~ >> >>> I think this is caused by r261697 in tree.c: >> >>> m_str = (char *) unescaped; >> >>> >> >>> The patch changes it to const_cast<char *> (unescaped) which fixes the >> >>> build for me. >> >> >> >> I cannot approve this patch, but I can say thanks very much for catching >> >> this problem and proposing a fix. I guess that I must be using an old >> >> version of g++ for my testing as this error did not show up. :-( >> > Hi Nick, >> > Thanks for confirming. I went ahead and committed the patch in r261700 >> > since I guess it's trivial enough to fit under the "obvious" rule. >> Yes. >> >> Thanks for taking care of it. > > Shouldn't we use > m_str = CONST_CAST (char *, unescaped); > instead? That is what most similar spots use. That macro seems obsolete now that we compile as C++. Jason
On Mon, Jun 18, 2018 at 01:48:05PM -0400, Jason Merrill wrote: > On Mon, Jun 18, 2018 at 12:41 PM, Jakub Jelinek <jakub@redhat.com> wrote: > > On Mon, Jun 18, 2018 at 08:34:28AM -0600, Jeff Law wrote: > >> On 06/18/2018 08:08 AM, Prathamesh Kulkarni wrote: > >> > On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: > >> >> Hi Prathamesh, > >> >> > >> >>> I am getting the following build error with trunk: > >> >>> ../../gcc/gcc/tree.c: In member function ‘void > >> >>> escaped_string::escape(const char*)’: > >> >>> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to > >> >>> type ‘char*’ casts away qualifiers [-Werror=cast-qual] > >> >>> m_str = (char *) unescaped; > >> >>> ^~~~~~~~~ > >> >>> I think this is caused by r261697 in tree.c: > >> >>> m_str = (char *) unescaped; > >> >>> > >> >>> The patch changes it to const_cast<char *> (unescaped) which fixes the > >> >>> build for me. > >> >> > >> >> I cannot approve this patch, but I can say thanks very much for catching > >> >> this problem and proposing a fix. I guess that I must be using an old > >> >> version of g++ for my testing as this error did not show up. :-( > >> > Hi Nick, > >> > Thanks for confirming. I went ahead and committed the patch in r261700 > >> > since I guess it's trivial enough to fit under the "obvious" rule. > >> Yes. > >> > >> Thanks for taking care of it. > > > > Shouldn't we use > > m_str = CONST_CAST (char *, unescaped); > > instead? That is what most similar spots use. > > That macro seems obsolete now that we compile as C++. But shouldn't we then remove/poison those macros and replace all uses? I don't care much if we use CONST_CAST or const_cast, but care about consistency. Jakub
On Mon, Jun 18, 2018 at 1:51 PM, Jakub Jelinek <jakub@redhat.com> wrote: > On Mon, Jun 18, 2018 at 01:48:05PM -0400, Jason Merrill wrote: >> On Mon, Jun 18, 2018 at 12:41 PM, Jakub Jelinek <jakub@redhat.com> wrote: >> > On Mon, Jun 18, 2018 at 08:34:28AM -0600, Jeff Law wrote: >> >> On 06/18/2018 08:08 AM, Prathamesh Kulkarni wrote: >> >> > On 18 June 2018 at 19:28, Nick Clifton <nickc@redhat.com> wrote: >> >> >> Hi Prathamesh, >> >> >> >> >> >>> I am getting the following build error with trunk: >> >> >>> ../../gcc/gcc/tree.c: In member function ‘void >> >> >>> escaped_string::escape(const char*)’: >> >> >>> ../../gcc/gcc/tree.c:12457:20: error: cast from type ‘const char*’ to >> >> >>> type ‘char*’ casts away qualifiers [-Werror=cast-qual] >> >> >>> m_str = (char *) unescaped; >> >> >>> ^~~~~~~~~ >> >> >>> I think this is caused by r261697 in tree.c: >> >> >>> m_str = (char *) unescaped; >> >> >>> >> >> >>> The patch changes it to const_cast<char *> (unescaped) which fixes the >> >> >>> build for me. >> >> >> >> >> >> I cannot approve this patch, but I can say thanks very much for catching >> >> >> this problem and proposing a fix. I guess that I must be using an old >> >> >> version of g++ for my testing as this error did not show up. :-( >> >> > Hi Nick, >> >> > Thanks for confirming. I went ahead and committed the patch in r261700 >> >> > since I guess it's trivial enough to fit under the "obvious" rule. >> >> Yes. >> >> >> >> Thanks for taking care of it. >> > >> > Shouldn't we use >> > m_str = CONST_CAST (char *, unescaped); >> > instead? That is what most similar spots use. >> >> That macro seems obsolete now that we compile as C++. > > But shouldn't we then remove/poison those macros and replace all uses? > I don't care much if we use CONST_CAST or const_cast, but care about > consistency. That would make sense. Jason
diff --git a/gcc/tree.c b/gcc/tree.c index 6728f1c..889d88c 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -12454,7 +12454,7 @@ escaped_string::escape (const char *unescaped) if (m_owned) free (m_str); - m_str = (char *) unescaped; + m_str = const_cast<char *> (unescaped); m_owned = false; if (unescaped == NULL || *unescaped == 0)