public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH]: Cast in c-pretty-print.c causes warning
@ 2009-08-31 20:34 Kai Tietz
  2009-09-02 19:03 ` Gabriel Dos Reis
  0 siblings, 1 reply; 16+ messages in thread
From: Kai Tietz @ 2009-08-31 20:34 UTC (permalink / raw)
  To: GCC Patches

[-- Attachment #1: Type: text/plain, Size: 615 bytes --]

Hi,

In general it is bad to use size_t to cast point to scalar, but here
in c-pretty-print.c is looks ok, as the scalar is truncated to an
unsigned int type here and just the lowest 16-bit are in fact used.
So here the patch for it

ChangeLog

2009-08-31  Kai Tietz  <kai.tietz@onevision.com>

	* c-pretty-print.c (pp_c_tree_decl_identifier): Use size_t instead of
	'unsigned long' to cast a pointer to scalar.

Tested for i686-pc-mingw32 and x86_64-pc-mingw32. Ok for apply?

Cheers,
Kai


-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

[-- Attachment #2: cprettyprint.diff --]
[-- Type: application/octet-stream, Size: 478 bytes --]

Index: gcc/gcc/c-pretty-print.c
===================================================================
--- gcc.orig/gcc/c-pretty-print.c	2009-05-16 11:49:04.000000000 +0200
+++ gcc/gcc/c-pretty-print.c	2009-08-31 20:08:35.766267700 +0200
@@ -2235,7 +2235,7 @@
   else
     {
       static char xname[8];
-      sprintf (xname, "<U%4x>", ((unsigned)((unsigned long)(t) & 0xffff)));
+      sprintf (xname, "<U%4x>", ((unsigned)((size_t)(t) & 0xffff)));
       name = xname;
     }
 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-08-31 20:34 [PATCH]: Cast in c-pretty-print.c causes warning Kai Tietz
@ 2009-09-02 19:03 ` Gabriel Dos Reis
  2009-09-02 19:50   ` Kai Tietz
  0 siblings, 1 reply; 16+ messages in thread
From: Gabriel Dos Reis @ 2009-09-02 19:03 UTC (permalink / raw)
  To: Kai Tietz; +Cc: GCC Patches

On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
> Hi,
>
> In general it is bad to use size_t to cast point to scalar, but here
> in c-pretty-print.c is looks ok, as the scalar is truncated to an
> unsigned int type here and just the lowest 16-bit are in fact used.
> So here the patch for it

I'm not sure the 'size_t' trick makes the code clearer.  In fact, I believe
we want uintptr_t -- but, in the form that OK with C90 compilers.

-- Gaby

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 19:03 ` Gabriel Dos Reis
@ 2009-09-02 19:50   ` Kai Tietz
  2009-09-02 21:01     ` Richard Henderson
  2009-09-02 21:18     ` Gabriel Dos Reis
  0 siblings, 2 replies; 16+ messages in thread
From: Kai Tietz @ 2009-09-02 19:50 UTC (permalink / raw)
  To: gdr; +Cc: GCC Patches

2009/9/2 Gabriel Dos Reis <dosreis@gmail.com>:
> On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>> Hi,
>>
>> In general it is bad to use size_t to cast point to scalar, but here
>> in c-pretty-print.c is looks ok, as the scalar is truncated to an
>> unsigned int type here and just the lowest 16-bit are in fact used.
>> So here the patch for it
>
> I'm not sure the 'size_t' trick makes the code clearer.  In fact, I believe
> we want uintptr_t -- but, in the form that OK with C90 compilers.
>
> -- Gaby
>

Right, by this reason we use in w64 not the gnu stdint.h header. We
define uintptr_t/intptr_t/size_t etc with __extension__ to avoid those
warnings.
I can introduce here an new type __extension__ typedef __SIZE_TYPE__
c90_size_t;, if you prefer.

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 19:50   ` Kai Tietz
@ 2009-09-02 21:01     ` Richard Henderson
  2009-09-02 21:06       ` Kai Tietz
  2009-09-02 21:18     ` Gabriel Dos Reis
  1 sibling, 1 reply; 16+ messages in thread
From: Richard Henderson @ 2009-09-02 21:01 UTC (permalink / raw)
  To: Kai Tietz; +Cc: gdr, GCC Patches

On 09/02/2009 12:50 PM, Kai Tietz wrote:
> 2009/9/2 Gabriel Dos Reis<dosreis@gmail.com>:
>> On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com>  wrote:
>>> Hi,
>>>
>>> In general it is bad to use size_t to cast point to scalar, but here
>>> in c-pretty-print.c is looks ok, as the scalar is truncated to an
>>> unsigned int type here and just the lowest 16-bit are in fact used.
>>> So here the patch for it
>>
>> I'm not sure the 'size_t' trick makes the code clearer.  In fact, I believe
>> we want uintptr_t -- but, in the form that OK with C90 compilers.
>>
> Right, by this reason we use in w64 not the gnu stdint.h header.

I think you've lost the plot.  The gnu stdint.h header should
have the correct definition of uintptr_t even for w64.  If not,
then that's what should be fixed.

> We
> define uintptr_t/intptr_t/size_t etc with __extension__ to avoid those
> warnings.
> I can introduce here an new type __extension__ typedef __SIZE_TYPE__
> c90_size_t;, if you prefer.

Huh?!?  What exactly do you think __extension__ will accomplish?


r~

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 21:01     ` Richard Henderson
@ 2009-09-02 21:06       ` Kai Tietz
  0 siblings, 0 replies; 16+ messages in thread
From: Kai Tietz @ 2009-09-02 21:06 UTC (permalink / raw)
  To: Richard Henderson; +Cc: gdr, GCC Patches

2009/9/2 Richard Henderson <rth@redhat.com>:
> On 09/02/2009 12:50 PM, Kai Tietz wrote:
>>
>> 2009/9/2 Gabriel Dos Reis<dosreis@gmail.com>:
>>>
>>> On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com>
>>>  wrote:
>>>>
>>>> Hi,
>>>>
>>>> In general it is bad to use size_t to cast point to scalar, but here
>>>> in c-pretty-print.c is looks ok, as the scalar is truncated to an
>>>> unsigned int type here and just the lowest 16-bit are in fact used.
>>>> So here the patch for it
>>>
>>> I'm not sure the 'size_t' trick makes the code clearer.  In fact, I
>>> believe
>>> we want uintptr_t -- but, in the form that OK with C90 compilers.
>>>
>> Right, by this reason we use in w64 not the gnu stdint.h header.
>
> I think you've lost the plot.  The gnu stdint.h header should
> have the correct definition of uintptr_t even for w64.  If not,
> then that's what should be fixed.
>
>> We
>> define uintptr_t/intptr_t/size_t etc with __extension__ to avoid those
>> warnings.
>> I can introduce here an new type __extension__ typedef __SIZE_TYPE__
>> c90_size_t;, if you prefer.
>
> Huh?!?  What exactly do you think __extension__ will accomplish?
>
>
> r~
>

Well, I meant here stddef.h file too btw. If you try to use long long
in C90, you will get warnings. By using __extension__ you can avoid
them.

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 19:50   ` Kai Tietz
  2009-09-02 21:01     ` Richard Henderson
@ 2009-09-02 21:18     ` Gabriel Dos Reis
  2009-09-02 21:21       ` Kai Tietz
  1 sibling, 1 reply; 16+ messages in thread
From: Gabriel Dos Reis @ 2009-09-02 21:18 UTC (permalink / raw)
  To: Kai Tietz; +Cc: GCC Patches

On Wed, Sep 2, 2009 at 2:50 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
> 2009/9/2 Gabriel Dos Reis <dosreis@gmail.com>:
>> On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>>> Hi,
>>>
>>> In general it is bad to use size_t to cast point to scalar, but here
>>> in c-pretty-print.c is looks ok, as the scalar is truncated to an
>>> unsigned int type here and just the lowest 16-bit are in fact used.
>>> So here the patch for it
>>
>> I'm not sure the 'size_t' trick makes the code clearer.  In fact, I believe
>> we want uintptr_t -- but, in the form that OK with C90 compilers.
>>
>> -- Gaby
>>
>
> Right, by this reason we use in w64 not the gnu stdint.h header. We
> define uintptr_t/intptr_t/size_t etc with __extension__ to avoid those
> warnings.
> I can introduce here an new type __extension__ typedef __SIZE_TYPE__
> c90_size_t;, if you prefer.

c-pretty-print.c is built in the first stage, so you cannot use
unconditional gnu extensions.
also we want uintptr_t (or equivalent for C90 compilers); but I would not use
size_t directly.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 21:18     ` Gabriel Dos Reis
@ 2009-09-02 21:21       ` Kai Tietz
  2009-09-02 22:17         ` Richard Henderson
  0 siblings, 1 reply; 16+ messages in thread
From: Kai Tietz @ 2009-09-02 21:21 UTC (permalink / raw)
  To: Gabriel Dos Reis; +Cc: GCC Patches

2009/9/2 Gabriel Dos Reis <gdr@integrable-solutions.net>:
> On Wed, Sep 2, 2009 at 2:50 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>> 2009/9/2 Gabriel Dos Reis <dosreis@gmail.com>:
>>> On Mon, Aug 31, 2009 at 1:13 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>>>> Hi,
>>>>
>>>> In general it is bad to use size_t to cast point to scalar, but here
>>>> in c-pretty-print.c is looks ok, as the scalar is truncated to an
>>>> unsigned int type here and just the lowest 16-bit are in fact used.
>>>> So here the patch for it
>>>
>>> I'm not sure the 'size_t' trick makes the code clearer.  In fact, I believe
>>> we want uintptr_t -- but, in the form that OK with C90 compilers.
>>>
>>> -- Gaby
>>>
>>
>> Right, by this reason we use in w64 not the gnu stdint.h header. We
>> define uintptr_t/intptr_t/size_t etc with __extension__ to avoid those
>> warnings.
>> I can introduce here an new type __extension__ typedef __SIZE_TYPE__
>> c90_size_t;, if you prefer.
>
> c-pretty-print.c is built in the first stage, so you cannot use
> unconditional gnu extensions.
> also we want uintptr_t (or equivalent for C90 compilers); but I would not use
> size_t directly.
>

Ok, I can file a patch to add gstdint.h to system.h, or is it better
to use here just a config.h check for existing stdint.h and otherwise
fall back to long type for intptr_t?

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 21:21       ` Kai Tietz
@ 2009-09-02 22:17         ` Richard Henderson
  2009-09-03 10:52           ` Richard Guenther
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Henderson @ 2009-09-02 22:17 UTC (permalink / raw)
  To: Kai Tietz; +Cc: Gabriel Dos Reis, GCC Patches

On 09/02/2009 02:21 PM, Kai Tietz wrote:
> Ok, I can file a patch to add gstdint.h to system.h, or is it better
> to use here just a config.h check for existing stdint.h and otherwise
> fall back to long type for intptr_t?

It's best to have a configure check.
See the standard autoconf macro AC_TYPE_UINTPTR_T.


r~

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-02 22:17         ` Richard Henderson
@ 2009-09-03 10:52           ` Richard Guenther
  2009-09-03 13:30             ` Kai Tietz
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Guenther @ 2009-09-03 10:52 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Kai Tietz, Gabriel Dos Reis, GCC Patches

On Thu, Sep 3, 2009 at 12:17 AM, Richard Henderson<rth@redhat.com> wrote:
> On 09/02/2009 02:21 PM, Kai Tietz wrote:
>>
>> Ok, I can file a patch to add gstdint.h to system.h, or is it better
>> to use here just a config.h check for existing stdint.h and otherwise
>> fall back to long type for intptr_t?
>
> It's best to have a configure check.
> See the standard autoconf macro AC_TYPE_UINTPTR_T.

The LTO branch also makes use of uintptr_t and adds

AC_CHECK_TYPE(intptr_t, long)

which is obviously wrong for LLP64 hosts ;)  But see config/stdint.m4
and config/stdint_h.m4.

Richard.

>
> r~
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 10:52           ` Richard Guenther
@ 2009-09-03 13:30             ` Kai Tietz
  2009-09-03 13:52               ` Richard Guenther
  0 siblings, 1 reply; 16+ messages in thread
From: Kai Tietz @ 2009-09-03 13:30 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Richard Henderson, Gabriel Dos Reis, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1345 bytes --]

2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
> On Thu, Sep 3, 2009 at 12:17 AM, Richard Henderson<rth@redhat.com> wrote:
>> On 09/02/2009 02:21 PM, Kai Tietz wrote:
>>>
>>> Ok, I can file a patch to add gstdint.h to system.h, or is it better
>>> to use here just a config.h check for existing stdint.h and otherwise
>>> fall back to long type for intptr_t?
>>
>> It's best to have a configure check.
>> See the standard autoconf macro AC_TYPE_UINTPTR_T.
>
> The LTO branch also makes use of uintptr_t and adds
>
> AC_CHECK_TYPE(intptr_t, long)
>
> which is obviously wrong for LLP64 hosts ;)  But see config/stdint.m4
> and config/stdint_h.m4.
>
> Richard.

So here is the revised patch using gstdint.h. Seems to work nice AFAIT.

ChangeLog

2009-09-03  Kai Tietz  <kai.tietz@onevision.com>

	* config.in (HAVE_STDINT_H): New.
	* configure.ac (AC_CHECK_HEADERS): Add stdint.h check.
	(GCC_HEADER_STDINT): Generated gstdint.h.
	* configure: Regenerated.
	* system.h (gstdint.h): Add include.
	* Makefile.in (aclocal): Add config/stdint.m4.
	* aclocal.m4: Regenerated.

Tested for x86_64-pc-linux, i686-pc-mingw32, and x86_64-w64-mingw32.
Ok for apply?

Cheers,
Kai


-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

[-- Attachment #2: stdint.diff --]
[-- Type: text/x-diff, Size: 2709 bytes --]

Index: gcc/gcc/config.in
===================================================================
--- gcc.orig/gcc/config.in	2009-08-24 08:11:35.000000000 +0200
+++ gcc/gcc/config.in	2009-09-03 14:52:19.123369700 +0200
@@ -1144,6 +1144,9 @@
 #undef HAVE_MALLOC_H
 #endif
 
+#ifndef USED_FOR_TARGET
+#undef HAVE_STDINT_H
+#endif
 
 /* Define to 1 if you have the `mbstowcs' function. */
 #ifndef USED_FOR_TARGET
Index: gcc/gcc/configure.ac
===================================================================
--- gcc.orig/gcc/configure.ac	2009-08-28 21:28:51.000000000 +0200
+++ gcc/gcc/configure.ac	2009-09-03 14:51:35.217369700 +0200
@@ -933,12 +933,15 @@
 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
 		 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
 		 sys/resource.h sys/param.h sys/times.h sys/stat.h \
-		 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+		 direct.h malloc.h stdint.h langinfo.h ldfcn.h \
+		 locale.h wchar.h)
 
 # Check for thread headers.
 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
 
+GCC_HEADER_STDINT(gstdint.h)
+
 # These tests can't be done till we know if we have limits.h.
 gcc_AC_C_CHAR_BIT
 AC_C_BIGENDIAN
Index: gcc/gcc/system.h
===================================================================
--- gcc.orig/gcc/system.h	2009-08-27 15:04:09.000000000 +0200
+++ gcc/gcc/system.h	2009-09-03 14:52:38.046369700 +0200
@@ -414,6 +414,8 @@
 extern void *realloc (void *, size_t);
 #endif
 
+#include "gstdint.h"
+
 /* If the system doesn't provide strsignal, we get it defined in
    libiberty but no declaration is supplied.  */
 #if !defined (HAVE_STRSIGNAL) \
Index: gcc/gcc/Makefile.in
===================================================================
--- gcc.orig/gcc/Makefile.in	2009-09-02 23:52:30.000000000 +0200
+++ gcc/gcc/Makefile.in	2009-09-03 13:40:53.469369700 +0200
@@ -1621,6 +1621,7 @@
 	$(srcdir)/../config/lib-prefix.m4 \
 	$(srcdir)/../config/override.m4 \
 	$(srcdir)/../config/progtest.m4 \
+	$(srcdir)/../config/stdint.m4 \
 	$(srcdir)/../config/unwind_ipinfo.m4 \
 	$(srcdir)/../config/warnings.m4 \
 	$(srcdir)/acinclude.m4
Index: gcc/gcc/aclocal.m4
===================================================================
--- gcc.orig/gcc/aclocal.m4	2009-09-03 01:31:07.000000000 +0200
+++ gcc/gcc/aclocal.m4	2009-09-03 13:36:54.565369700 +0200
@@ -114,6 +114,7 @@
 m4_include([../config/lib-prefix.m4])
 m4_include([../config/override.m4])
 m4_include([../config/progtest.m4])
+m4_include([../config/stdint.m4])
 m4_include([../config/unwind_ipinfo.m4])
 m4_include([../config/warnings.m4])
 m4_include([acinclude.m4])

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 13:30             ` Kai Tietz
@ 2009-09-03 13:52               ` Richard Guenther
  2009-09-03 14:09                 ` Kai Tietz
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Guenther @ 2009-09-03 13:52 UTC (permalink / raw)
  To: Kai Tietz; +Cc: Richard Henderson, Gabriel Dos Reis, GCC Patches

On Thu, Sep 3, 2009 at 3:30 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
> 2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
>> On Thu, Sep 3, 2009 at 12:17 AM, Richard Henderson<rth@redhat.com> wrote:
>>> On 09/02/2009 02:21 PM, Kai Tietz wrote:
>>>>
>>>> Ok, I can file a patch to add gstdint.h to system.h, or is it better
>>>> to use here just a config.h check for existing stdint.h and otherwise
>>>> fall back to long type for intptr_t?
>>>
>>> It's best to have a configure check.
>>> See the standard autoconf macro AC_TYPE_UINTPTR_T.
>>
>> The LTO branch also makes use of uintptr_t and adds
>>
>> AC_CHECK_TYPE(intptr_t, long)
>>
>> which is obviously wrong for LLP64 hosts ;)  But see config/stdint.m4
>> and config/stdint_h.m4.
>>
>> Richard.
>
> So here is the revised patch using gstdint.h. Seems to work nice AFAIT.

The check fro stdint.h is redundant I believe, thus

 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
                 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
                 sys/resource.h sys/param.h sys/times.h sys/stat.h \
-                direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+                direct.h malloc.h stdint.h langinfo.h ldfcn.h \
+                locale.h wchar.h)

can be omitted.

The rest of the patch looks fine though I cannot approve it.

Thanks,
Richard.

> ChangeLog
>
> 2009-09-03  Kai Tietz  <kai.tietz@onevision.com>
>
>        * config.in (HAVE_STDINT_H): New.
>        * configure.ac (AC_CHECK_HEADERS): Add stdint.h check.
>        (GCC_HEADER_STDINT): Generated gstdint.h.
>        * configure: Regenerated.
>        * system.h (gstdint.h): Add include.
>        * Makefile.in (aclocal): Add config/stdint.m4.
>        * aclocal.m4: Regenerated.
>
> Tested for x86_64-pc-linux, i686-pc-mingw32, and x86_64-w64-mingw32.
> Ok for apply?
>
> Cheers,
> Kai
>
>
> --
> |  (\_/) This is Bunny. Copy and paste
> | (='.'=) Bunny into your signature to help
> | (")_(") him gain world domination
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 13:52               ` Richard Guenther
@ 2009-09-03 14:09                 ` Kai Tietz
  2009-09-03 14:11                   ` Richard Henderson
  2009-09-04  2:12                   ` Gabriel Dos Reis
  0 siblings, 2 replies; 16+ messages in thread
From: Kai Tietz @ 2009-09-03 14:09 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Richard Henderson, Gabriel Dos Reis, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 2109 bytes --]

2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
> On Thu, Sep 3, 2009 at 3:30 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>> 2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
>>> On Thu, Sep 3, 2009 at 12:17 AM, Richard Henderson<rth@redhat.com> wrote:
>>>> On 09/02/2009 02:21 PM, Kai Tietz wrote:
>>>>>
>>>>> Ok, I can file a patch to add gstdint.h to system.h, or is it better
>>>>> to use here just a config.h check for existing stdint.h and otherwise
>>>>> fall back to long type for intptr_t?
>>>>
>>>> It's best to have a configure check.
>>>> See the standard autoconf macro AC_TYPE_UINTPTR_T.
>>>
>>> The LTO branch also makes use of uintptr_t and adds
>>>
>>> AC_CHECK_TYPE(intptr_t, long)
>>>
>>> which is obviously wrong for LLP64 hosts ;)  But see config/stdint.m4
>>> and config/stdint_h.m4.
>>>
>>> Richard.
>>
>> So here is the revised patch using gstdint.h. Seems to work nice AFAIT.
>
> The check fro stdint.h is redundant I believe, thus
>
>  AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
>                 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
>                 sys/resource.h sys/param.h sys/times.h sys/stat.h \
> -                direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
> +                direct.h malloc.h stdint.h langinfo.h ldfcn.h \
> +                locale.h wchar.h)
>
> can be omitted.
>
> The rest of the patch looks fine though I cannot approve it.
>
> Thanks,
> Richard.

Thanks for point to this. Indeed it is not necessary to add stdint.h
check in AC_HEADERS.

Here the adjusted patch

2009-09-03  Kai Tietz  <kai.tietz@onevision.com>

	* config.in (HAVE_STDINT_H): New.
	* configure.ac (GCC_HEADER_STDINT): Generated gstdint.h.
	* configure: Regenerated.
	* system.h (gstdint.h): Add include.
	* Makefile.in (aclocal): Add config/stdint.m4.
	* aclocal.m4: Regenerated.

Ok for apply to trunk?

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

[-- Attachment #2: stdint.diff --]
[-- Type: text/x-diff, Size: 2350 bytes --]

Index: gcc/gcc/config.in
===================================================================
--- gcc.orig/gcc/config.in	2009-08-24 08:11:35.000000000 +0200
+++ gcc/gcc/config.in	2009-09-03 14:52:19.123369700 +0200
@@ -1144,6 +1144,9 @@
 #undef HAVE_MALLOC_H
 #endif
 
+#ifndef USED_FOR_TARGET
+#undef HAVE_STDINT_H
+#endif
 
 /* Define to 1 if you have the `mbstowcs' function. */
 #ifndef USED_FOR_TARGET
Index: gcc/gcc/configure.ac
===================================================================
--- gcc.orig/gcc/configure.ac	2009-08-28 21:28:51.000000000 +0200
+++ gcc/gcc/configure.ac	2009-09-03 15:58:19.281369700 +0200
@@ -939,6 +939,8 @@
 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
 
+GCC_HEADER_STDINT(gstdint.h)
+
 # These tests can't be done till we know if we have limits.h.
 gcc_AC_C_CHAR_BIT
 AC_C_BIGENDIAN
Index: gcc/gcc/system.h
===================================================================
--- gcc.orig/gcc/system.h	2009-08-27 15:04:09.000000000 +0200
+++ gcc/gcc/system.h	2009-09-03 14:52:38.046369700 +0200
@@ -414,6 +414,8 @@
 extern void *realloc (void *, size_t);
 #endif
 
+#include "gstdint.h"
+
 /* If the system doesn't provide strsignal, we get it defined in
    libiberty but no declaration is supplied.  */
 #if !defined (HAVE_STRSIGNAL) \
Index: gcc/gcc/Makefile.in
===================================================================
--- gcc.orig/gcc/Makefile.in	2009-09-02 23:52:30.000000000 +0200
+++ gcc/gcc/Makefile.in	2009-09-03 13:40:53.469369700 +0200
@@ -1621,6 +1621,7 @@
 	$(srcdir)/../config/lib-prefix.m4 \
 	$(srcdir)/../config/override.m4 \
 	$(srcdir)/../config/progtest.m4 \
+	$(srcdir)/../config/stdint.m4 \
 	$(srcdir)/../config/unwind_ipinfo.m4 \
 	$(srcdir)/../config/warnings.m4 \
 	$(srcdir)/acinclude.m4
Index: gcc/gcc/aclocal.m4
===================================================================
--- gcc.orig/gcc/aclocal.m4	2009-09-03 01:31:07.000000000 +0200
+++ gcc/gcc/aclocal.m4	2009-09-03 13:36:54.565369700 +0200
@@ -114,6 +114,7 @@
 m4_include([../config/lib-prefix.m4])
 m4_include([../config/override.m4])
 m4_include([../config/progtest.m4])
+m4_include([../config/stdint.m4])
 m4_include([../config/unwind_ipinfo.m4])
 m4_include([../config/warnings.m4])
 m4_include([acinclude.m4])

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 14:09                 ` Kai Tietz
@ 2009-09-03 14:11                   ` Richard Henderson
  2009-09-03 14:19                     ` Kai Tietz
  2009-09-04  2:12                   ` Gabriel Dos Reis
  1 sibling, 1 reply; 16+ messages in thread
From: Richard Henderson @ 2009-09-03 14:11 UTC (permalink / raw)
  To: Kai Tietz; +Cc: Richard Guenther, Gabriel Dos Reis, GCC Patches

On 09/03/2009 07:08 AM, Kai Tietz wrote:
> 	* config.in (HAVE_STDINT_H): New.
> 	* configure.ac (GCC_HEADER_STDINT): Generated gstdint.h.
> 	* configure: Regenerated.
> 	* system.h (gstdint.h): Add include.
> 	* Makefile.in (aclocal): Add config/stdint.m4.
> 	* aclocal.m4: Regenerated.

Ok.


r~

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 14:11                   ` Richard Henderson
@ 2009-09-03 14:19                     ` Kai Tietz
  2009-09-03 15:59                       ` Kai Tietz
  0 siblings, 1 reply; 16+ messages in thread
From: Kai Tietz @ 2009-09-03 14:19 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Richard Guenther, Gabriel Dos Reis, GCC Patches

2009/9/3 Richard Henderson <rth@redhat.com>:
> On 09/03/2009 07:08 AM, Kai Tietz wrote:
>>
>>        * config.in (HAVE_STDINT_H): New.
>>        * configure.ac (GCC_HEADER_STDINT): Generated gstdint.h.
>>        * configure: Regenerated.
>>        * system.h (gstdint.h): Add include.
>>        * Makefile.in (aclocal): Add config/stdint.m4.
>>        * aclocal.m4: Regenerated.
>
> Ok.
>
>
> r~
>

Committed at revision 151379.

Thanks,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 14:19                     ` Kai Tietz
@ 2009-09-03 15:59                       ` Kai Tietz
  0 siblings, 0 replies; 16+ messages in thread
From: Kai Tietz @ 2009-09-03 15:59 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Richard Guenther, Gabriel Dos Reis, GCC Patches

2009/9/3 Kai Tietz <ktietz70@googlemail.com>:
> 2009/9/3 Richard Henderson <rth@redhat.com>:
>> On 09/03/2009 07:08 AM, Kai Tietz wrote:
>>>
>>>        * config.in (HAVE_STDINT_H): New.
>>>        * configure.ac (GCC_HEADER_STDINT): Generated gstdint.h.
>>>        * configure: Regenerated.
>>>        * system.h (gstdint.h): Add include.
>>>        * Makefile.in (aclocal): Add config/stdint.m4.
>>>        * aclocal.m4: Regenerated.
>>
>> Ok.
>>
>>
>> r~
>>
>
> Committed at revision 151379.
>
> Thanks,
> Kai
>
> --
> |  (\_/) This is Bunny. Copy and paste
> | (='.'=) Bunny into your signature to help
> | (")_(") him gain world domination
>

Reverted patch due ada bootstrap failures on linux host.

Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH]: Cast in c-pretty-print.c causes warning
  2009-09-03 14:09                 ` Kai Tietz
  2009-09-03 14:11                   ` Richard Henderson
@ 2009-09-04  2:12                   ` Gabriel Dos Reis
  1 sibling, 0 replies; 16+ messages in thread
From: Gabriel Dos Reis @ 2009-09-04  2:12 UTC (permalink / raw)
  To: Kai Tietz; +Cc: Richard Guenther, Richard Henderson, GCC Patches

On Thu, Sep 3, 2009 at 9:08 AM, Kai Tietz<ktietz70@googlemail.com> wrote:
> 2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
>> On Thu, Sep 3, 2009 at 3:30 PM, Kai Tietz<ktietz70@googlemail.com> wrote:
>>> 2009/9/3 Richard Guenther <richard.guenther@gmail.com>:
>>>> On Thu, Sep 3, 2009 at 12:17 AM, Richard Henderson<rth@redhat.com> wrote:
>>>>> On 09/02/2009 02:21 PM, Kai Tietz wrote:
>>>>>>
>>>>>> Ok, I can file a patch to add gstdint.h to system.h, or is it better
>>>>>> to use here just a config.h check for existing stdint.h and otherwise
>>>>>> fall back to long type for intptr_t?
>>>>>
>>>>> It's best to have a configure check.
>>>>> See the standard autoconf macro AC_TYPE_UINTPTR_T.
>>>>
>>>> The LTO branch also makes use of uintptr_t and adds
>>>>
>>>> AC_CHECK_TYPE(intptr_t, long)
>>>>
>>>> which is obviously wrong for LLP64 hosts ;)  But see config/stdint.m4
>>>> and config/stdint_h.m4.
>>>>
>>>> Richard.
>>>
>>> So here is the revised patch using gstdint.h. Seems to work nice AFAIT.
>>
>> The check fro stdint.h is redundant I believe, thus
>>
>>  AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
>>                 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
>>                 sys/resource.h sys/param.h sys/times.h sys/stat.h \
>> -                direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
>> +                direct.h malloc.h stdint.h langinfo.h ldfcn.h \
>> +                locale.h wchar.h)
>>
>> can be omitted.
>>
>> The rest of the patch looks fine though I cannot approve it.
>>
>> Thanks,
>> Richard.
>
> Thanks for point to this. Indeed it is not necessary to add stdint.h
> check in AC_HEADERS.
>
> Here the adjusted patch
>
> 2009-09-03  Kai Tietz  <kai.tietz@onevision.com>
>
>        * config.in (HAVE_STDINT_H): New.
>        * configure.ac (GCC_HEADER_STDINT): Generated gstdint.h.
>        * configure: Regenerated.
>        * system.h (gstdint.h): Add include.
>        * Makefile.in (aclocal): Add config/stdint.m4.
>        * aclocal.m4: Regenerated.
>
> Ok for apply to trunk?

I do not see the corresponding hunk for c-pretty-print.c -- or is my mailer
playing tricks with me?

Where is what should happen

  (1) check for uintptr_t; use it if available;
  (2) otherwise; check for 'long long'; use it if available;
  (3) otherwise; if 32-bit build; use 'unsigned long';
  (4) otherwise; if 64-bit build, check for __int64 and use it;
       otherwise moan. (this would happens only for curious w64-based builds).

You should introduce uintptr_t as a typedef for cases 2 through 4.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-09-04  2:12 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-31 20:34 [PATCH]: Cast in c-pretty-print.c causes warning Kai Tietz
2009-09-02 19:03 ` Gabriel Dos Reis
2009-09-02 19:50   ` Kai Tietz
2009-09-02 21:01     ` Richard Henderson
2009-09-02 21:06       ` Kai Tietz
2009-09-02 21:18     ` Gabriel Dos Reis
2009-09-02 21:21       ` Kai Tietz
2009-09-02 22:17         ` Richard Henderson
2009-09-03 10:52           ` Richard Guenther
2009-09-03 13:30             ` Kai Tietz
2009-09-03 13:52               ` Richard Guenther
2009-09-03 14:09                 ` Kai Tietz
2009-09-03 14:11                   ` Richard Henderson
2009-09-03 14:19                     ` Kai Tietz
2009-09-03 15:59                       ` Kai Tietz
2009-09-04  2:12                   ` Gabriel Dos Reis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).