OSDN Git Service

Use a linked data structure for the uses lists of an SDNode, just like
authorRoman Levenstein <romix.llvm@googlemail.com>
Wed, 26 Mar 2008 12:39:26 +0000 (12:39 +0000)
committerRoman Levenstein <romix.llvm@googlemail.com>
Wed, 26 Mar 2008 12:39:26 +0000 (12:39 +0000)
commite326332acd5fefb9854118603b4d07d4e44b64c5
tree40c4cfd27294a5496057047830a1f5c4b4fe432c
parent8dba9afd086f72db920db81a3d73c7297390cda7
Use a linked data structure for the uses lists of an SDNode, just like
LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
This allows constant time for all uses list maintenance operations.

The idea was suggested by Chris. Reviewed by Evan and Dan.
Patch is tested and approved by Dan.

On normal use-cases compilation speed is not affected. On very big basic
blocks there are compilation speedups in the range of 15-20% or even better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48822 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/ScheduleDAG.h
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/X86/X86ISelDAGToDAG.cpp
lib/Target/X86/X86ISelLowering.cpp