[CodeGen] Refactor MachineMemOperand's Flags enum.

Summary:
- Give it a shorter name (because we're going to refer to it often from
  SelectionDAG and friends).

- Split the flags and alignment into separate variables.

- Specialize FlagsEnumTraits for it, so we can do bitwise ops on it
  without losing type information.

- Make some enum values constants in MachineMemOperand instead.
  MOMaxBits should not be a valid Flag.

- Simplify some of the bitwise ops for dealing with Flags.

Reviewers: chandlerc

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D22281

llvm-svn: 275438
This commit is contained in:
Justin Lebar
2016-07-14 17:07:44 +00:00
parent 6003fb58df
commit a3b786a8c1
4 changed files with 50 additions and 32 deletions

View File

@@ -299,8 +299,11 @@ MachineFunction::getMachineMemOperand(MachinePointerInfo PtrInfo, unsigned f,
uint64_t s, unsigned base_alignment,
const AAMDNodes &AAInfo,
const MDNode *Ranges) {
return new (Allocator) MachineMemOperand(PtrInfo, f, s, base_alignment,
AAInfo, Ranges);
// FIXME: Get rid of this static_cast and make getMachineOperand take a
// MachineMemOperand::Flags param.
return new (Allocator)
MachineMemOperand(PtrInfo, static_cast<MachineMemOperand::Flags>(f), s,
base_alignment, AAInfo, Ranges);
}
MachineMemOperand *