Optimization fixes

Two primary fixes.  First, the save/restore mechanism for FP callee saves
was broken if there were any holes in the save mask (the Arm ld/store
multiple instructions for floating point use a start + count mechanism,
rather than the bit-mask mechanism used for core registers).

The second fix corrects a problem introduced by the recent enhancements
to loading floating point literals.  The load->copy optimization mechanism
for literal loads used the value of the loaded literal to identify
redundant loads.  However, it used only the first 32 bits of the
literal - which worked fine previously because 64-bit literal loads
were treated as a pair of 32-bit loads.  The fix was to use the
label of the literal rather than the value in the aliasInfo - which
works for all sizes.

Change-Id: Ic4779adf73b2c7d80059a988b0ecdef39921a81f
diff --git a/src/compiler/Frontend.cc b/src/compiler/Frontend.cc
index eef6888..f43bf64 100644
--- a/src/compiler/Frontend.cc
+++ b/src/compiler/Frontend.cc
@@ -702,12 +702,12 @@
     cUnit.printMe = compiler.IsVerbose();
     cUnit.printMeVerbose = compiler.IsVerbose();
     cUnit.disableOpt = 0 |
-         (1 << kTrackLiveTemps) |
-         (1 << kLoadStoreElimination) |
-         (1 << kLoadHoisting) |
-         (1 << kSuppressLoads) |
-         (1 << kNullCheckElimination) |
-         (1 << kPromoteRegs) |
+         //(1 << kTrackLiveTemps) |
+         //(1 << kLoadStoreElimination) |
+         //(1 << kLoadHoisting) |
+         //(1 << kSuppressLoads) |
+         //(1 << kNullCheckElimination) |
+         //(1 << kPromoteRegs) |
          0;
 #endif