[PATCH] D20769: [IPRA] Interprocedural Register Allocation

Vivek Pandya via llvm-commits llvm-commits at lists.llvm.org
Sat May 28 03:12:39 PDT 2016


vivekvpandya created this revision.
vivekvpandya added reviewers: joker-eph, hfinkel, qcolombet.
vivekvpandya added a subscriber: llvm-commits.

This commit addes pass to change CodeGen order to be bottom up order on Call Graph. The patch for the same has been  provided by dear Mehdi Amini.
    
This commit added required passes for IPRA.
    1) lib/CodeGen/RegUsageInfoCollector.cpp (MachineFunction Pass) to create RegMask based on actual register usage, scheduled at POST-RA
    2) lib/CodeGen/PhysicalRegisterUsageInfo.cpp (Immutable Pass) to store RegMask details for functions which has been processed in bottom up order on Call Graph, Scheduled before RegAllocation.
    3) lib/Target/X86/X86RegUsageInfoPropagate.cpp (Target Specific MachineFunction Pass) to update RegMasks of call instr in caller function based on the RegMask returned by immutable pass, scheduled at Pre-RegAlloc.
    
This commit also addes a method setRegMask() to MachineOperand class.
This commit also addes command line option to enable IPRA -enable-ipra and debug type -debug-only="ipra".

http://reviews.llvm.org/D20769

Files:
  include/llvm/CodeGen/MachineOperand.h
  include/llvm/CodeGen/Passes.h
  include/llvm/CodeGen/PhysicalRegisterUsageInfo.h
  include/llvm/InitializePasses.h
  lib/CodeGen/CMakeLists.txt
  lib/CodeGen/PhysicalRegisterUsageInfo.cpp
  lib/CodeGen/RegUsageInfoCollector.cpp
  lib/CodeGen/TargetPassConfig.cpp
  lib/Target/X86/CMakeLists.txt
  lib/Target/X86/X86.h
  lib/Target/X86/X86RegUsageInfoPropagate.cpp
  lib/Target/X86/X86TargetMachine.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20769.58887.patch
Type: text/x-patch
Size: 20582 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160528/9743d3d9/attachment-0001.bin>


More information about the llvm-commits mailing list