Merge r112531 to Morbo.  Radar 8251350.

llvm-svn: 114346
diff --git a/llvm-gcc-4.2/gcc/llvm-convert.cpp b/llvm-gcc-4.2/gcc/llvm-convert.cpp
index 48adcd5..6f187a4 100644
--- a/llvm-gcc-4.2/gcc/llvm-convert.cpp
+++ b/llvm-gcc-4.2/gcc/llvm-convert.cpp
@@ -5402,6 +5402,10 @@
     EmitBuiltinUnaryOp(Amt, Result, Intrinsic::ctpop);
     Result = Builder.CreateBinOp(Instruction::And, Result,
                                  ConstantInt::get(Result->getType(), 1));
+    const Type *DestTy = ConvertType(TREE_TYPE(exp));
+    Result = Builder.CreateIntCast(Result, DestTy,
+                                   !TYPE_UNSIGNED(TREE_TYPE(exp)),
+                                   "cast");
     return true;
   }
   case BUILT_IN_POPCOUNT:  // These GCC builtins always return int.