Add a new method to ConstantFP
authorChris Lattner <sabre@nondot.org>
Mon, 2 Feb 2004 18:40:29 +0000 (18:40 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 2 Feb 2004 18:40:29 +0000 (18:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11068 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Constants.h

index 79b6322dbf9f8c158c61d688bc157e0f281fa3f7..2d6893acf098a099b243eae901c5c08e33af7aa7 100644 (file)
@@ -283,6 +283,24 @@ public:
     return T.I == 0;
   }
 
+  /// isExactlyValue - We don't rely on operator== working on double values, as
+  /// it returns true for things that are clearly not equal, like -0.0 and 0.0.
+  /// As such, this method can be used to do an exact bit-for-bit comparison of
+  /// two floating point values.
+  bool isExactlyValue(double V) const {
+    union {
+      double V;
+      uint64_t I;
+    } T1;
+    T1.V = Val;
+    union {
+      double V;
+      uint64_t I;
+    } T2;
+    T2.V = Val;
+    return T1.I == T2.I;
+  }
+
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const ConstantFP *) { return true; }
   static bool classof(const Constant *CPV);  // defined in Constants.cpp