------- Additional Comments From pinskia at physics dot uc dot edu 2005-08-13 21:44 ------- Subject: Re: [4.0.x regression] Generates wrong code for funcptr comparison
On Aug 13, 2005, at 5:42 PM, danglin at gcc dot gnu dot org wrote: > > ------- Additional Comments From danglin at gcc dot gnu dot org > 2005-08-13 21:42 ------- > Bah, while this is probably going to happen for hppa-linux, it'snever > going to happen for hppa-hpux. GCC's treatment of functionpointers > here is just WRONG.There are a couple of issues. The most serious is > the following:We have the following code from __pthread_sigaction in > the .i file: if (old == ((__sighandler_t) 1) || old == > ((__sighandler_t) 0) || old == ((__sighandler_t) -1)) > __sighandler[sig].old = (arch_sighandler_t) > act->__sigaction_handler.sa_handler;This is what the above turns into > in the tree dump filebug321785.c.t02.original: if ((void > (*<T2bd>) (int)) old - 2B > -4B) { > __sighandler[sig].old = (void (*<T431>) (int, struct sigcontext *)) > act->__sigaction_handler.sa_handler; }I don't believe that > the transformation is valid. hmm, looks like another build_range_test bug. -- Pinski -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23369