[LLVMdev] Handling of DebugLocs during CSE of SelectionDAG nodes. (original) (raw)

Devang Patel dpatel at apple.com
Wed Sep 14 11:28:19 PDT 2011


On Sep 14, 2011, at 10:34 AM, Jakob Stoklund Olesen wrote:

On Sep 14, 2011, at 7:37 AM, Richard Osborne wrote:

Is there a view on which of the following approaches is better in general when two nodes with debug locations are merged because of CSE (either in the MachineCSE pass or because of the CSEMap in the SelectionDAG):

1) Use the DebugLoc of either of the pair of nodes (chosen arbitrarily). 2) Throw away the line number information on the merged node since it is not possible to preserve the information that operation is associated with multiple lines. The current approach seems to be 1). Would you consider patches to change the behavior to 2)? At -O0, SelectionDAG nodes are scheduled in source order when possible. When merging identical nodes, you should make sure that the resulting node has the earlier source order, and the debug location should match. That way, CSE simply looks like the last definition of a value has been removed. Debug location and source order of the first definition should be preserved.

hmm… I agree with Jakob. See SelectionDAG::GetOrdering()



More information about the llvm-dev mailing list