[LLVMdev] Handling of DebugLocs during CSE of SelectionDAG nodes.
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
>> 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