I use compiler is Metaware hcarc4.5a, FT2 version is 2.3.5. I get the
following compiler warnings:

 

1.   Warning 572:

w "freetype235/src/base/ftnames.c",L36/C53(#572):       face:
Potentially dangerous pointer cast:

|    sizeof `struct TT_FaceRec_'
("freetype235/include/freetype/internal/tttypes.h",L1258/C19) differs
from

|    sizeof `struct FT_FaceRec_'
("freetype235/include/freetype/freetype.h",L895/C19) and

|    accessing an lvalue through this pointer alias may violate
assumptions

|    in the ANSI C Language Reference used by the optimizer.

|    (See (X3.159-1989 p.39,L18) on object access for more details.)

I search freetype-devel archive, find following message:
http://lists.nongnu.org/archive/html/freetype-devel/2002-10/msg00080.htm
l

So, I decide that disable the display of 572 warning message with pragam
Offwarn:

CFLAGS     += -Hpragma=Offwarn(572)

 

 

 

 

2.   Warning 240:

w "freetype235/src/base/ftstream.c",L350/C22(#240):     Cast of type
`FT_Byte *' to type `const signed char *'

|    may violate an assumption made by the optimizer.

|    To be safe, you should recompile your program at a lower

|    optimization level; or else, turn off the BEHAVED toggle.

As the warning message, turn off the BEHAVED toggle:

CFLAGS     += -Hoff=Behaved

About more information "BEHAVED", see Metaware High C/C++ Programmer's
Guide (for ARC Tangent) 6.3.7:

(This is a similar version for IBM PowerPC
<http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/EEB261E8AAE0D4
A4872569D90064F5EC/$file/c_proggd.pdf>  on internet, see 6.2.5 Page192)

When it assumes that code is well-behaved, the compiler can be less
conservative in generating code for pointer-based objects. Well-behaved
code follows these rules:

.  The address of a union member is never assigned to a pointer.

.  A value of a pointer type is never cast to an incompatible pointer
type.

 

Given these assumptions, the compiler might be able to generate
substantially better code in referencing pointer-based variables. The
compiler issues an appropriate warning if either of these assumptions is
violated in such a way as to affect assumptions made by the optimizer.
You must decide whether the warnings can be safely ignored or whether
the program should be compiled at a lower optimization level.

 

Caution: The compiler might not catch all instances of misbehaved code.
For example, a pointer-to-char might be passed to an undeclared
(unprototyped) external function expecting a pointer-to-int. Therefore,
it is possible for a program to compile at optimization level 6 without
warnings (and run incorrectly), but run correctly when compiled at a
lower optimization level.

 

You can manually request this optimization by turning On toggle Behaved.

 

 

 

 

3.    Warning:

w "freetype235/src/autofit/aflatin.c",L200: Variable "round" is possibly
referenced before set.

My solution as bellowing:

        FT_Bool     round = 0;  /* make compiler happy */

 

 

 

 

 

Allan

 

_______________________________________________
Freetype-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to