summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-08-19 22:31:45 +0000
committerMatthias Braun <matze@braunis.de>2016-08-19 22:31:45 +0000
commita7d6fc9618aaee28fbbe2324ee8f6168e551d64f (patch)
tree580ae7ab5c24f70907bf3fa5fc129ee1cf91dc30
parenta3b983aa5ed22e3e026f70f9a2c58f19ff334528 (diff)
downloadbcm5719-llvm-a7d6fc9618aaee28fbbe2324ee8f6168e551d64f.tar.gz
bcm5719-llvm-a7d6fc9618aaee28fbbe2324ee8f6168e551d64f.zip
MachineFunction: Cleanup/simplify MachineFunctionProperties::print()
- Always compile print() regardless of LLVM_ENABLE_DUMP. (We usually only gard dump() functions with that). - Only show the set properties to reduce output clutter. - Remove the unused variant that even shows the unset properties. - Fix comments llvm-svn: 279338
-rw-r--r--llvm/include/llvm/CodeGen/MachineFunction.h6
-rw-r--r--llvm/lib/CodeGen/MachineFunction.cpp52
-rw-r--r--llvm/lib/CodeGen/MachineFunctionPass.cpp2
-rw-r--r--llvm/test/CodeGen/AArch64/arm64-misched-multimmo.ll2
4 files changed, 22 insertions, 40 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h
index e0c7dd24423..7374c07732b 100644
--- a/llvm/include/llvm/CodeGen/MachineFunction.h
+++ b/llvm/include/llvm/CodeGen/MachineFunction.h
@@ -84,7 +84,6 @@ struct MachineFunctionInfo {
/// require that a property be set.
class MachineFunctionProperties {
// TODO: Add MachineVerifier checks for AllVRegsAllocated
- // TODO: Add a way to print the properties and make more useful error messages
// Possible TODO: Allow targets to extend this (perhaps by allowing the
// constructor to specify the size of the bit vector)
// Possible TODO: Allow requiring the negative (e.g. VRegsAllocated could be
@@ -155,9 +154,8 @@ public:
return !V.Properties.test(Properties);
}
- // Print the MachineFunctionProperties in human-readable form. If OnlySet is
- // true, only print the properties that are set.
- void print(raw_ostream &ROS, bool OnlySet=false) const;
+ /// Print the MachineFunctionProperties in human-readable form.
+ void print(raw_ostream &OS) const;
private:
BitVector Properties =
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
index 4cdb6c890a5..2ed6517cb3d 100644
--- a/llvm/lib/CodeGen/MachineFunction.cpp
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
@@ -54,40 +54,26 @@ static cl::opt<unsigned>
void MachineFunctionInitializer::anchor() {}
-void MachineFunctionProperties::print(raw_ostream &ROS, bool OnlySet) const {
- // Leave this function even in NDEBUG as an out-of-line anchor.
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
- bool NeedsComma = false;
- for (BitVector::size_type i = 0; i < Properties.size(); ++i) {
- bool HasProperty = Properties[i];
- if (OnlySet && !HasProperty)
+static const char *getPropertyName(MachineFunctionProperties::Property Prop) {
+ typedef MachineFunctionProperties::Property P;
+ switch(Prop) {
+ case P::AllVRegsAllocated: return "AllVRegsAllocated";
+ case P::IsSSA: return "IsSSA";
+ case P::Legalized: return "Legalized";
+ case P::RegBankSelected: return "RegBankSelected";
+ case P::Selected: return "Selected";
+ case P::TracksLiveness: return "TracksLiveness";
+ }
+}
+
+void MachineFunctionProperties::print(raw_ostream &OS) const {
+ const char *Separator = "";
+ for (BitVector::size_type I = 0; I < Properties.size(); ++I) {
+ if (!Properties[I])
continue;
- if (NeedsComma)
- ROS << ", ";
- else
- NeedsComma = true;
- switch(static_cast<Property>(i)) {
- case Property::IsSSA:
- ROS << (HasProperty ? "SSA" : "Post SSA");
- break;
- case Property::TracksLiveness:
- ROS << (HasProperty ? "" : "not ") << "tracking liveness";
- break;
- case Property::AllVRegsAllocated:
- ROS << (HasProperty ? "AllVRegsAllocated" : "HasVRegs");
- break;
- case Property::Legalized:
- ROS << (HasProperty ? "" : "not ") << "legalized";
- break;
- case Property::RegBankSelected:
- ROS << (HasProperty ? "" : "not ") << "RegBank-selected";
- break;
- case Property::Selected:
- ROS << (HasProperty ? "" : "not ") << "selected";
- break;
- }
+ OS << Separator << getPropertyName(static_cast<Property>(I));
+ Separator = ", ";
}
-#endif
}
//===----------------------------------------------------------------------===//
@@ -418,9 +404,7 @@ StringRef MachineFunction::getName() const {
void MachineFunction::print(raw_ostream &OS, const SlotIndexes *Indexes) const {
OS << "# Machine code for function " << getName() << ": ";
- OS << "Properties: <";
getProperties().print(OS);
- OS << ">\n";
// Print Frame Information
FrameInfo->print(*this, OS);
diff --git a/llvm/lib/CodeGen/MachineFunctionPass.cpp b/llvm/lib/CodeGen/MachineFunctionPass.cpp
index 228fe170ab4..524ebdbf657 100644
--- a/llvm/lib/CodeGen/MachineFunctionPass.cpp
+++ b/llvm/lib/CodeGen/MachineFunctionPass.cpp
@@ -49,7 +49,7 @@ bool MachineFunctionPass::runOnFunction(Function &F) {
errs() << "MachineFunctionProperties required by " << getPassName()
<< " pass are not met by function " << F.getName() << ".\n"
<< "Required properties: ";
- RequiredProperties.print(errs(), /*OnlySet=*/true);
+ RequiredProperties.print(errs());
errs() << "\nCurrent properties: ";
MFProps.print(errs());
errs() << "\n";
diff --git a/llvm/test/CodeGen/AArch64/arm64-misched-multimmo.ll b/llvm/test/CodeGen/AArch64/arm64-misched-multimmo.ll
index d4e8aa1a0a0..3593668e015 100644
--- a/llvm/test/CodeGen/AArch64/arm64-misched-multimmo.ll
+++ b/llvm/test/CodeGen/AArch64/arm64-misched-multimmo.ll
@@ -7,7 +7,7 @@
; Check that no scheduling dependencies are created between the paired loads and the store during post-RA MI scheduling.
;
-; CHECK-LABEL: # Machine code for function foo: Properties: <Post SSA
+; CHECK-LABEL: # Machine code for function foo:
; CHECK: SU(2): %W{{[0-9]+}}<def>, %W{{[0-9]+}}<def> = LDPWi
; CHECK: Successors:
; CHECK-NOT: ch SU(4)
OpenPOWER on IntegriCloud