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"); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits