diff options
-rw-r--r-- | lib/Target/X86/X86ISelDAGToDAG.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 901409a154..b6d2a8e9da 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -281,8 +281,11 @@ void X86DAGToDAGISel::DetermineTopologicalOrdering() { void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { if (!ReachibilityMatrix) { DetermineTopologicalOrdering(); - ReachibilityMatrix = new unsigned char[DAGSize * DAGSize]; - memset(ReachibilityMatrix, 0, DAGSize * DAGSize * sizeof(unsigned char)); + unsigned RMSize = DAGSize * DAGSize / 8; + if ((DAGSize * DAGSize) % 8) + RMSize++; + ReachibilityMatrix = new unsigned char[RMSize]; + memset(ReachibilityMatrix, 0, RMSize); } int Idf = f->getNodeId(); |