From: Eric B. <er...@go...> - 2007-07-27 19:38:37
|
Hi Wolfgang, Wolfgang Jansen wrote: > When trying the same with "gcc" then many warnings like the following > were issued: > > gec.c: In function `T202f63': > gec.c:82734: warning: cast to pointer from integer of different size > > Line 82734 in C code reads > > t2 = ((T0*)gevoid(((T202*)(C))->a20, l2)); > > whereas "gevoid" is declared as > > extern int gevoid(T0* C, ...); > > Thus, the bad cast is from "int" to "T0*", i.e. from 4 to 8 bytes > on a Tru64 platform (as I'm working on). I think, the solution is > to redefine "gevoid" like "T0* gevoid(T0* C, ...)". I think that this problem should be solved now. gec now generates a different "gevoid" function for each possible return type. So, no bad type cast should occur anymore. > After the warnings an error message follows: > > as1: Error: /usr/tmp/cciOAHCE.s, line 5: gp-relative segments together > exceed 64k bytes > > Probably, the generated object file is too large. > (I had the same effect also earlier when bootstrapping the SE compiler > from a single C file instead from a split one.) gec is now able to split the generated C code over several files. I didn't change the bootstrap to use this new functionality yet. > cc: Warning: gec.c, line 479288: Non-void function "gevoid" does not > contain a return statement. (missingreturn) > int gevoid(T0* C, ...) This should be solved as well. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |