www.digitalmars.com         C & C++   DMDScript  

D.gnu - "initializer for integer value is too complicated" and arm-wince

reply Chad J <gamerChad _spamIsBad_gmail.com> writes:
In my port of gphobos to PocketPC, I have run into this error that the 
compiler throws:

initializer for integer value is too complicated

I was wondering if anyone else has run into this error.  If so, I am 
also hoping for advice on how to make it go away.  I suspect it is some 
kind of compiler error and I have no idea what it's origins are.

I have run into this on both gcc 3.3.3 and gcc 3.4.6.
It seems to trigger under one of at least two conditions:  rectangular 
array initialization, and variadic functions.

float[][] blah = [[1]]; // causes error
char[][] strings = ["value"]; // causes error

struct something { char[] value; }
something[] ident = [{"foo"}]; // causes error

The rectangular arrays are annoying but don't bug me so much because I 
can work around that.  The following code:

struct something { char[] value; }
something[] ident;

static this()
{
     something toAdd;
     toAdd.value = "foo";
     ident ~= toAdd;
}

... works fine.
Variadic functions though, would require a rewrite of how the library is 
used in order to be worked around, unless I am ignorant of a good hack.
Here is a variadic function that triggers the error:

void va(...) {}

void somefunc()
{
     // each of these calls would cause an error
     va("arg1","arg2");
     va(27,76);
}


OK now for some good news.  In an attempt to escape this by changing to 
a different gcc version, I have managed to go from gcc version 3.3.3 to 
3.4.6 as my cross compiler.  I've tried 4.0.3 before and run into nasty 
assembler errors, which I never bothered to sort out.  3.4.6 was just a 
matter of making the compiler dump it's specs file and then merging in 
necessary changes from the previous specs file.  There might have still 
been some rough edges in the specs file, so I needed to change #if 
_WIN32 into #ifdef _WIN32 in two files: internal/critical.c and 
internal/monitor.c.  Hope that's alright.

Also I'd like to mention my progress.  I think make is about halfway 
done compiling the phobos source files into object files.  Not sure if 
anything comes after that, besides debugging and a great struggle to 
make it directory-independent, for better binary distribution, if that 
even makes sense.  IMO this thing SHOULD be binary distributed (in 
addition to source, of course) when completed, because building it is a 
pain.
May 12 2006
parent reply Georg Wrede <georg.wrede nospam.org> writes:
Chad J wrote:
 Also I'd like to mention my progress.  I think make is about halfway 
 done compiling the phobos source files into object files.  Not sure if 
 anything comes after that, besides debugging and a great struggle to 
 make it directory-independent, for better binary distribution, if that 
 even makes sense.  IMO this thing SHOULD be binary distributed (in 
 addition to source, of course) when completed, because building it is a 
 pain.

Just awesome!!!!
May 16 2006
parent reply kris <foo bar.com> writes:
Georg Wrede wrote:
 Chad J wrote:
 
 Also I'd like to mention my progress.  I think make is about halfway 
 done compiling the phobos source files into object files.  Not sure if 
 anything comes after that, besides debugging and a great struggle to 
 make it directory-independent, for better binary distribution, if that 
 even makes sense.  IMO this thing SHOULD be binary distributed (in 
 addition to source, of course) when completed, because building it is 
 a pain.

Just awesome!!!!

Yes ... I'll second that :)
May 16 2006
parent John Reimer <terminal.node gmail.com> writes:
kris wrote:
 Georg Wrede wrote:
 Chad J wrote:

 Also I'd like to mention my progress.  I think make is about halfway 
 done compiling the phobos source files into object files.  Not sure 
 if anything comes after that, besides debugging and a great struggle 
 to make it directory-independent, for better binary distribution, if 
 that even makes sense.  IMO this thing SHOULD be binary distributed 
 (in addition to source, of course) when completed, because building 
 it is a pain.

Just awesome!!!!

Yes ... I'll second that :)

Third! -JJR
May 16 2006