From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeffrey A Law To: Greg McGary Cc: Joern Rennecke , gcc@gcc.gnu.org Subject: Re: Need advice on bounds checking approaches Date: Mon, 10 Apr 2000 10:20:00 -0000 Message-id: <8064.955383104@upchuck> References: X-SW-Source: 2000-04/msg00170.html In message < msr9cevotm.fsf@tucson-net-82.eng.ascend.com >you write: > > Presumably you're trying to delete one conditional trap that is subsumed > by > > an earlier conditional trap? > > I'm not sure what you mean by "subsumed" in this context. What I'm > trying to optimize is this case: > > if (x) > p->a = 1; > p->b = 2; > p->c = 3; > p->d = 4; > p++; > p->e = 5; > p->f = 6; > p->g = 7; > p->h = 8; > > Without optimization, the bounds of `p' are checked eight times, once > per `->' operator. The necessary checks are at `p->a = 1', `p->b = > 2', `p->e = 5'; the rest are redundant and should be deleted. p->a is > separated from the others by a BB boundary, so there's nothing special > here. p->b .. p->h are in the same BB, but p->e .. p->h have LOG_LINKS > that point to the increment of p.value, and so differ from p->a .. p->d. By subsumed I mean a check that is redundant due to an earlier check. > > If so, that might be best modeled after an > > identical optimization we do on jumps. See jump.c > > Would you kindly give a more specific clue about where to look in > jump.c? thread_jumps I believe does something similar to what you need. I also believe CSE does similar things as part of it's follow-jumps/skip-blocks optimizations. jeff