inline

Matthew Fluet fluet@CS.Cornell.EDU
Mon, 5 Nov 2001 19:43:29 -0500 (EST)


> Here's the issue, from Machine IL:
> 
> Noop
> SU(4) = L_6365
> Switch (PointerToInt (IntAsPointer (1)),
> 	[(1, L_1077), (3, L_1075), (5, L_1073), (7, L_1054), (9, L_1052)],
> 	None)
> 
> We set L_6365 as the code pointer, but the only non-tail call that uses
> L_6365 as it's handler is unreachable; not because of the switch above
> (which the x86-codegen will optimize), but because the MachineIL block
> that makes the non-tail call isn't the destination of any jump.  It's just
> sort of floating there.  Anyways, another x86-codegen simplification
> eliminates any unreachable block (because later passes assume that a DFS
> traversal of the intra-procedural call graph starting from the function
> starting block will visit all blocks), so L_6365 goes away, but not the
> setting of the code pointer.

So, I can run through the assembly and remove any statement that
references an label that isn't reachable; such statements should
presumably be dead code.  Or, we can just live with this in the short term
and assume that such massive amounts of dead code don't make it back to
the codegen.