Path: utzoo!telly!attcan!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!tut.cis.ohio-state.edu!arkesden.eng.sun.com!tiemann From: tiemann@arkesden.eng.sun.com (Michael Tiemann) Newsgroups: gnu.gcc.bug Subject: integrate.c Message-ID: <8912121924.AA19447@arkesden.sun.com> Date: 12 Dec 89 19:24:05 GMT Sender: daemon@tut.cis.ohio-state.edu Reply-To: tiemann@sun.com Distribution: gnu Organization: GNUs Not Usenet Lines: 58 arkesden% diff -c2 integrate.c~ integrate.c *** integrate.c~ Wed Dec 6 19:30:47 1989 --- integrate.c Tue Dec 12 11:16:16 1989 *************** *** 1162,1166 **** be ignored since we are changing (REG n) into inline_target. */ ! if (REG_FUNCTION_VALUE_P (XEXP (pattern, 0))) break; /* Don't emit a (USE (REG n)) of something which --- 1162,1166 ---- be ignored since we are changing (REG n) into inline_target. */ ! if (! ignore && REG_FUNCTION_VALUE_P (XEXP (pattern, 0))) break; /* Don't emit a (USE (REG n)) of something which arkesden% This fixes a problem which can be repeated by compiling the following file with GCC version 1.36: typedef struct RegInfo { char val; char fake; } RegInfo; typedef struct Field { RegInfo* rip; } Field; inline char get_val(register Field *t) { return t->rip->fake; } Field *F ( register Field *t, RegInfo* ri ) { t->rip = ri; get_val(t); ri->val = get_val(t); return t; } main() { RegInfo ri; Field f; F (&f, &ri); } In this manner: !gc gcc l21.c -dr arkesden% a.out Segmentation fault arkesden% Michael