Commit 69e524d5fe2a43c22764f2ecdb04a84578417924

Werner Lemberg 2013-08-05T23:38:32

Fix gcc pragmas. * src/truetype/ttinterp.c (TT_MulFix14_long_long, TT_DotFix14_long_long): Older gcc versions don't accept diagnostic pragmas within a function body.

diff --git a/ChangeLog b/ChangeLog
index 594756f..d264471 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2013-08-05  Werner Lemberg  <wl@gnu.org>
 
+	Fix gcc pragmas.
+
+	* src/truetype/ttinterp.c (TT_MulFix14_long_long,
+	TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
+	pragmas within a function body.
+
+2013-08-05  Werner Lemberg  <wl@gnu.org>
+
 	Fix Savannah bug #39700.
 
 	* builds/unix/ftconfig.h: Synchronize with
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 5ed16d0..aefeaa2 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -1494,6 +1494,10 @@
 
 #define TT_MulFix14  TT_MulFix14_long_long
 
+  /* Temporarily disable the warning that C90 doesn't support `long long'. */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+
   /* This is declared `noinline' because inlining the function results */
   /* in slower code.  The `pure' attribute indicates that the result   */
   /* only depends on the parameters.                                   */
@@ -1502,10 +1506,6 @@
   TT_MulFix14_long_long( FT_Int32  a,
                          FT_Int    b )
   {
-    /* Temporarily disable the warning that C90 doesn't support */
-    /* `long long'.                                             */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wlong-long"
 
     long long  ret = (long long)a * b;
 
@@ -1518,9 +1518,9 @@
     ret += 0x2000 + tmp;
 
     return (FT_Int32)( ret >> 14 );
+  }
 
 #pragma GCC diagnostic pop
-  }
 
 #endif /* __GNUC__ && ( __i386__ || __x86_64__ ) */
 
@@ -1571,6 +1571,9 @@
 
 #define TT_DotFix14  TT_DotFix14_long_long
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+
   static __attribute__(( pure )) FT_Int32
   TT_DotFix14_long_long( FT_Int32  ax,
                          FT_Int32  ay,
@@ -1579,8 +1582,6 @@
   {
     /* Temporarily disable the warning that C90 doesn't support */
     /* `long long'.                                             */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wlong-long"
 
     long long  temp1 = (long long)ax * bx;
     long long  temp2 = (long long)ay * by;
@@ -1592,9 +1593,10 @@
 
     return (FT_Int32)( temp1 >> 14 );
 
-#pragma GCC diagnostic pop
   }
 
+#pragma GCC diagnostic pop
+
 #endif /* __GNUC__ && (__arm__ || __i386__ || __x86_64__) */