From: Konstantin S. <kon...@gm...> - 2010-04-27 16:39:06
|
On Tue, Apr 27, 2010 at 7:46 PM, Julian Seward <js...@ac...> wrote: > On Tuesday 27 April 2010, Konstantin Serebryany wrote: >> Below is a dump of IRSB. >> Just look at these statements: >> ------ IMark(0x4C1C3A4, 4) ------ >> ... >> if (t20) goto {Boring} 0x4C1C3B4:I64 >> goto {Boring} 0x4C1C3A4:I64 >> >> As you can see, this IRSB represents a loop (label 0x4C1C3A4). > > Yes. > >> I want valgrind to never create such IRSBs with a loop (but instead break >> them into several SBs). >> Is that possible? > > Uh .. I'm still confused. Mostly because I can't see how you can > guarantee to avoid making IRSBs which have a conditional branch > back to the start. For example, consider the translation of > "rep movsb"; we have to create a straight line block of IR which > jumps back to the start. > > Can you show an IR example which illustrates what you mean? > eg, what does the IR that you want look like, for this example? Consider an SB which looks like this: BB1: L: code; goto L; Can valgrind create two SBs for this case? BB1: L: code; goto L1 BB2: L1: goto L --kcc > > J > |