🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #1736

GCC 1.28 aborts in gen_lowpart in combine stage

#1736
From: Rob McMahon
Date: Tue, 27 Sep 1988 23:51
43 lines
1929 bytes
GCC 1.28, Gould PN6000

While trying to simplify combinations like (zero_extend:DI (and:SI (reg:SI ...)
(const_int ...))), subst will call gen_lowpart_for_combine with mode DImode,
which calls gen_lowpart, which aborts.  I believe the problem is that
FAKE_EXTEND_SAFE_P should not accept modes bigger than a word.  Rejecting them
prevents subst from trying these simplifications, and it seems you could only
do this fake extension to DImode from a stack slot, you may not be able to
extend any old register.

Suggested fix:

RCS file: combine.c,v
retrieving revision 1.9
diff -c -r1.9 combine.c
*** /tmp/,RCSt1a01177	Wed Sep 28 00:43:12 1988
--- combine.c	Tue Sep 27 23:17:23 1988
***************
*** 730,737 ****
     If not for that, MEM's would very rarely be safe.  */
  
  #define FAKE_EXTEND_SAFE_P(MODE, FROM) \
!   (GET_CODE (FROM) == REG || GET_CODE (FROM) == SUBREG \
!    || GET_CODE (FROM) == MEM)
  
    if (x == from)
      return to;
--- 730,738 ----
     If not for that, MEM's would very rarely be safe.  */
  
  #define FAKE_EXTEND_SAFE_P(MODE, FROM) \
!   (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD			\
!    && (GET_CODE (FROM) == REG || GET_CODE (FROM) == SUBREG	\
!        || GET_CODE (FROM) == MEM))
  
    if (x == from)
      return to;

Rob
-- 
UUCP:   ...!mcvax!ukc!warwick!cudcv	PHONE:  +44 203 523037
JANET:  cudcv@uk.ac.warwick             ARPA:   cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England
Technical Details
Message-ID: <56@titania.warwick.ac.uk>
Path: arc1-ca.pugleaf.net!utzoo!telly!ddsw1!mcdchg!rutgers!labrea!eos!ames!amdahl!uunet!axion!ist!icdoc!ukc!warwick!cudcv

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!telly!ddsw1!mcdchg!rutgers!labrea!eos!ames!amdahl!uunet!axion!ist!icdoc!ukc!warwick!cudcv
From: cudcv@warwick.ac.uk (Rob McMahon)
Newsgroups: gnu.gcc.bug
Subject: GCC 1.28 aborts in gen_lowpart in combine stage
Message-ID: <56@titania.warwick.ac.uk>
Date: 27 Sep 88 23:51:41 GMT
Reply-To: cudcv@warwick.ac.uk (Rob McMahon)
Organization: Computing Services, Warwick University, UK
Lines: 43