This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR bootstrap/53459 - unused local typedef when building on altivec


dominiq@lps.ens.fr (Dominique Dhumieres) writes:

> I have regstapped r187893 with the following patch
>
> [karma] gcc/darwin_buildw% diff -up ../_gcc_clean/libcpp/lex.c ../work/libcpp/lex.c
> --- ../_gcc_clean/libcpp/lex.c	2012-05-25 08:54:05.000000000 +0200
> +++ ../work/libcpp/lex.c	2012-05-27 13:25:08.000000000 +0200
> @@ -592,7 +592,8 @@ search_line_fast (const uchar *s, const 
>  
>      union {
>        vc v;
> -      unsigned long l[N];
> +      /* Statically assert that N is 2 or 4.  */
> +      unsigned long l[(N == 2 || N == 4) ? N : -1];
>      } u;
>      unsigned long l, i = 0;
>  
>
> without related regression.

Thank you, Dominique.

So, dear maintainers, is the patch below OK?  It bootstraps on
x86_64-unknown-linux-gnu as well.

	PR bootstrap/53459
	* lex.c (search_line_fast): Avoid unused local typedefs to simulate
	a static assertion.
---
 libcpp/ChangeLog |    6 ++++++
 libcpp/lex.c     |    4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/libcpp/lex.c b/libcpp/lex.c
index c4dd603..98ee4e9 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -590,10 +590,10 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
   {
 #define N  (sizeof(vc) / sizeof(long))
 
-    typedef char check_count[(N == 2 || N == 4) * 2 - 1];
     union {
       vc v;
-      unsigned long l[N];
+      /* Statically assert that N is 2 or 4.  */
+      unsigned long l[(N == 2 || N == 4) ? N : -1];
     } u;
     unsigned long l, i = 0;
 
-- 
		Dodji


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]