[llvm-commits] [llvm-gcc-4.2] r42400 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Chris Lattner sabre at nondot.org
Thu Sep 27 08:48:25 PDT 2007


Author: lattner
Date: Thu Sep 27 10:48:25 2007
New Revision: 42400

URL: http://llvm.org/viewvc/llvm-project?rev=42400&view=rev
Log:
Fix PR1708 and test/CFrontend/2007-09-27-ComplexIntCompare.c


Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=42400&r1=42399&r2=42400&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Sep 27 10:48:25 2007
@@ -4691,14 +4691,22 @@
     break;
   }
   case EQ_EXPR:   // (a+ib) == (c+id) = (a == c) & (b == d)
-    // FIXME: What about integer complex?
-    DSTr = Builder.CreateFCmpOEQ(LHSr, RHSr, "tmpr");
-    DSTi = Builder.CreateFCmpOEQ(LHSi, RHSi, "tmpi");
+    if (LHSr->getType()->isFloatingPoint()) {
+      DSTr = Builder.CreateFCmpOEQ(LHSr, RHSr, "tmpr");
+      DSTi = Builder.CreateFCmpOEQ(LHSi, RHSi, "tmpi");
+    } else {
+      DSTr = Builder.CreateICmpEQ(LHSr, RHSr, "tmpr");
+      DSTi = Builder.CreateICmpEQ(LHSi, RHSi, "tmpi");
+    }
     return Builder.CreateAnd(DSTr, DSTi, "tmp");
   case NE_EXPR:   // (a+ib) != (c+id) = (a != c) | (b != d) 
-    // FIXME: What about integer complex?
-    DSTr = Builder.CreateFCmpUNE(LHSr, RHSr, "tmpr");
-    DSTi = Builder.CreateFCmpUNE(LHSi, RHSi, "tmpi");
+    if (LHSr->getType()->isFloatingPoint()) {
+      DSTr = Builder.CreateFCmpUNE(LHSr, RHSr, "tmpr");
+      DSTi = Builder.CreateFCmpUNE(LHSi, RHSi, "tmpi");
+    } else {
+      DSTr = Builder.CreateICmpEQ(LHSr, RHSr, "tmpr");
+      DSTi = Builder.CreateICmpEQ(LHSi, RHSi, "tmpi");
+    }
     return Builder.CreateOr(DSTr, DSTi, "tmp");
   }
   





More information about the llvm-commits mailing list