The bug seems to be in opt_rename.cxx. At line 322, one needs to
add:
tmp->Assign_sign_extd(cr->Is_sign_extd());
Note that lines 318-321 are copying a CODEREP's dtype and desctype
into the 'tmp CODEREP'. However it doesn't copy the Is_sign_extd()
flag, this caused an inconsistency.
Peng.
BTW. The 'tmp' contains 'invented/approximate dtype/desc types'
before those copy statements. This is reason for those copy statements
to be there in the first place.
> -----Original Message-----
> From: owner-pro64-support@xxxxxxxxxxx
> [mailto:owner-pro64-support@xxxxxxxxxxx]On Behalf Of David Goodwin
> Sent: Wednesday, October 04, 2000 11:39 AM
> To: pro64-support@xxxxxxxxxxx
> Cc: goodwin@xxxxxxxxxxxxx
> Subject: opt failure with latest sources
>
>
>
> I'm getting an Is_True failure with the latest sources for the attached
> program. The binary release doesn't have the problem, but it isn't an
> Is_True_On compiler, so I can't tell if the problem is with my sources
> or not.
>
> I compared the *.B file coming out of the front end, as well as the whirl
> at each phase leading up to the failure, and they seem the same for both
> compilers.
>
> You may want to release Is_True_On compilers from now on, since that would
> help debugging for those working with source, and also help find more bugs
> in general.
>
> David
>
>
> ### Assertion failure at line 3859 of
> /be/opt/opt_etable.cxx:
> ### Compiler Error in file raw.c during Global Optimization -- LPRE: Build
> initial occurrence lists phase:
> ### EXP_WORKLST::Adjust_combined_types: cr's sign extension flag is
> inconsistentxt-cc INTERNAL ERROR:
> returned non-zero status 1
>
>
> #include <stdio.h>
>
> unsigned char cstate;
>
> main() {
> int n;
>
> while(1) {
> n = foo();
> if ( n < 0 ) {
> bar(1);
> }
> if ( n == 0 ) break;
> }
> fprintf( stderr, "index=%d\n", (__int32_t)cstate);
> exit(0);
> }
>
|