mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Allow hasProperty() to be called on bundle-internal instructions.
When calling hasProperty() on an instruction inside a bundle, it should always behave as if IgnoreBundle was passed, and just return properties for the current instruction. Only attempt to aggregate bundle properties whan asked about the bundle header. The assertion fires on existing ARM test cases without this fix. llvm-svn: 172082
This commit is contained in:
parent
2ce09092a4
commit
5a483d3b0e
@ -313,11 +313,11 @@ public:
|
||||
/// The second argument indicates whether the query should look inside
|
||||
/// instruction bundles.
|
||||
bool hasProperty(unsigned MCFlag, QueryType Type = AnyInBundle) const {
|
||||
// Inline the fast path.
|
||||
if (Type == IgnoreBundle || !isBundled())
|
||||
// Inline the fast path for unbundled or bundle-internal instructions.
|
||||
if (Type == IgnoreBundle || !isBundled() || isBundledWithPred())
|
||||
return getDesc().getFlags() & (1 << MCFlag);
|
||||
|
||||
// If we have a bundle, take the slow path.
|
||||
// If this is the first instruction in a bundle, take the slow path.
|
||||
return hasPropertyInBundle(1 << MCFlag, Type);
|
||||
}
|
||||
|
||||
|
@ -752,6 +752,7 @@ void MachineInstr::addMemOperand(MachineFunction &MF,
|
||||
}
|
||||
|
||||
bool MachineInstr::hasPropertyInBundle(unsigned Mask, QueryType Type) const {
|
||||
assert(!isBundledWithPred() && "Must be called on bundle header");
|
||||
for (MachineBasicBlock::const_instr_iterator MII = this;; ++MII) {
|
||||
if (MII->getDesc().getFlags() & Mask) {
|
||||
if (Type == AnyInBundle)
|
||||
|
Loading…
Reference in New Issue
Block a user