From 69e524d5fe2a43c22764f2ecdb04a84578417924 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Mon, 5 Aug 2013 23:38:32 +0200 Subject: [PATCH] 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. --- ChangeLog | 8 ++++++++ src/truetype/ttinterp.c | 18 ++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 594756fbb..d264471d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-08-05 Werner Lemberg + + 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 Fix Savannah bug #39700. diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 5ed16d09a..aefeaa28c 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__) */