Preclude ambiguous conversion from G++ FE range-merge opt.  <rdar://problem/9186245>

llvm-svn: 128411
diff --git a/llvm-gcc-4.2/gcc/fold-const.c b/llvm-gcc-4.2/gcc/fold-const.c
index 8e0316e..d6bc8b0 100644
--- a/llvm-gcc-4.2/gcc/fold-const.c
+++ b/llvm-gcc-4.2/gcc/fold-const.c
@@ -4307,13 +4307,11 @@
 
       if (TREE_INT_CST_HIGH (high) == hi && TREE_INT_CST_LOW (high) == lo)
 	{
-	  if (TYPE_UNSIGNED (etype))
-	    {
-	      etype = lang_hooks.types.signed_type (etype);
-	      exp = fold_convert (etype, exp);
-	    }
-	  return fold_build2 (GT_EXPR, type, exp,
-			      build_int_cst (etype, 0));
+          /* LLVM LOCAL begin 9186245 */
+          if (!TYPE_UNSIGNED(etype))
+            return fold_build2 (GT_EXPR, type, exp,
+                                build_int_cst (etype, 0));
+          /* LLVM LOCAL end 9186245 */
 	}
     }