OLD | NEW |
1 //===-- ARMConstantIslandPass.cpp - ARM constant islands ------------------===// | 1 //===-- ARMConstantIslandPass.cpp - ARM constant islands ------------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file contains a pass that splits the constant pool up into 'islands' | 10 // This file contains a pass that splits the constant pool up into 'islands' |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 DEBUG(dbgs() << "***** ARMConstantIslands: " | 382 DEBUG(dbgs() << "***** ARMConstantIslands: " |
383 << MCP->getConstants().size() << " CP entries, aligned to " | 383 << MCP->getConstants().size() << " CP entries, aligned to " |
384 << MCP->getConstantPoolAlignment() << " bytes *****\n"); | 384 << MCP->getConstantPoolAlignment() << " bytes *****\n"); |
385 | 385 |
386 TII = (const ARMBaseInstrInfo *)MF->getTarget() | 386 TII = (const ARMBaseInstrInfo *)MF->getTarget() |
387 .getSubtargetImpl() | 387 .getSubtargetImpl() |
388 ->getInstrInfo(); | 388 ->getInstrInfo(); |
389 AFI = MF->getInfo<ARMFunctionInfo>(); | 389 AFI = MF->getInfo<ARMFunctionInfo>(); |
390 STI = &MF->getTarget().getSubtarget<ARMSubtarget>(); | 390 STI = &MF->getTarget().getSubtarget<ARMSubtarget>(); |
391 | 391 |
| 392 if (!STI->useConstIslands()) return false; // @LOCALMOD |
| 393 |
392 isThumb = AFI->isThumbFunction(); | 394 isThumb = AFI->isThumbFunction(); |
393 isThumb1 = AFI->isThumb1OnlyFunction(); | 395 isThumb1 = AFI->isThumb1OnlyFunction(); |
394 isThumb2 = AFI->isThumb2Function(); | 396 isThumb2 = AFI->isThumb2Function(); |
395 | 397 |
396 HasFarJump = false; | 398 HasFarJump = false; |
397 | 399 |
398 // This pass invalidates liveness information when it splits basic blocks. | 400 // This pass invalidates liveness information when it splits basic blocks. |
399 MF->getRegInfo().invalidateLiveness(); | 401 MF->getRegInfo().invalidateLiveness(); |
400 | 402 |
401 // Renumber all of the machine basic blocks in the function, guaranteeing that | 403 // Renumber all of the machine basic blocks in the function, guaranteeing that |
(...skipping 1666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2068 MF->RenumberBlocks(NewBB); | 2070 MF->RenumberBlocks(NewBB); |
2069 | 2071 |
2070 // Update the CFG. | 2072 // Update the CFG. |
2071 NewBB->addSuccessor(BB); | 2073 NewBB->addSuccessor(BB); |
2072 JTBB->removeSuccessor(BB); | 2074 JTBB->removeSuccessor(BB); |
2073 JTBB->addSuccessor(NewBB); | 2075 JTBB->addSuccessor(NewBB); |
2074 | 2076 |
2075 ++NumJTInserted; | 2077 ++NumJTInserted; |
2076 return NewBB; | 2078 return NewBB; |
2077 } | 2079 } |
OLD | NEW |