Subzero: Clean up a few areas.

1. Use a reverse_range() adaptor for range-based reverse iteration through containers.

2. Remove the emitting of the commented llvm-mc command line.

3. Remove a few TODOs.

4. For commented-out declarations within a class T like this:
   // T(const T&) = delete;
   // T &operator=(const T &) = delete;
Replace them with this:
   T(const T&) = default;
   T &operator=(const T &) = default;
And try to keep them private where possible.

5. Make LivenessNode and TimerTreeNode into internal classes.

BUG= none
R=jvoung@chromium.org

Review URL: https://codereview.chromium.org/830303003
diff --git a/src/IceDefs.h b/src/IceDefs.h
index 8aafbfd..f5147c6 100644
--- a/src/IceDefs.h
+++ b/src/IceDefs.h
@@ -29,6 +29,7 @@
 #include "llvm/ADT/BitVector.h"
 #include "llvm/ADT/ilist.h"
 #include "llvm/ADT/ilist_node.h"
+#include "llvm/ADT/iterator_range.h"
 #include "llvm/ADT/SmallBitVector.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/STLExtras.h"
@@ -157,6 +158,17 @@
 typedef llvm::raw_ostream Ostream;
 typedef llvm::raw_fd_ostream Fdstream;
 
+// Reverse range adaptors written in terms of llvm::make_range().
+template <typename T>
+llvm::iterator_range<typename T::const_reverse_iterator>
+reverse_range(const T &Container) {
+  return llvm::make_range(Container.rbegin(), Container.rend());
+}
+template <typename T>
+llvm::iterator_range<typename T::reverse_iterator> reverse_range(T &Container) {
+  return llvm::make_range(Container.rbegin(), Container.rend());
+}
+
 } // end of namespace Ice
 
 #endif // SUBZERO_SRC_ICEDEFS_H