Am 05.08.2011 08:22, schrieb malc: > > /home/malc/x/rcs/git/qemuorg/coroutine-ucontext.c: In function > 'coroutine_new': > /home/malc/x/rcs/git/qemuorg/coroutine-ucontext.c:160:16: error: 'arg.i[1]' > may be used uninitialized in this function > /home/malc/x/rcs/git/qemuorg/coroutine-ucontext.c:136:18: note: 'arg.i[1]' > was declared here > > diff --git a/coroutine-ucontext.c b/coroutine-ucontext.c > index 41c2379..42dc3e2 100644 > --- a/coroutine-ucontext.c > +++ b/coroutine-ucontext.c > @@ -133,7 +133,7 @@ static Coroutine *coroutine_new(void) > CoroutineUContext *co; > ucontext_t old_uc, uc; > jmp_buf old_env; > - union cc_arg arg; > + union cc_arg arg = {0}; > > /* The ucontext functions preserve signal masks which incurs a system > call > * overhead. setjmp()/longjmp() does not preserve signal masks but only > > I guess gcc should yell not only here on ppc32 but on any machine where > pointer size is less than the size of two ints.
Stefan, why does this code even exist again? I think at some point I had it changed to just use a static variable in order to avoid doing this kind of tricks with unions. Interestingly, the buildbot doesn't seem to have failed on i386. Kevin