Fixed a bug where generation of read-barriers caused
crash in ir-gen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66302 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp
index 9951d87..7037303 100644
--- a/lib/CodeGen/CGExprScalar.cpp
+++ b/lib/CodeGen/CGExprScalar.cpp
@@ -1015,6 +1015,9 @@
                                   LHS, RHS, "cmp");
     } else {
       // Unsigned integers and pointers.
+      // Casting becomes necessary with -fobjc-gc as one or the other my turn
+      // into an 'id' type due to generation of read barriers.
+      RHS = Builder.CreateBitCast(RHS, LHS->getType());
       Result = Builder.CreateICmp((llvm::ICmpInst::Predicate)UICmpOpc,
                                   LHS, RHS, "cmp");
     }