http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46647

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> 2010-11-24 22:00:25 
UTC ---
This seems to work:

---
diff --git a/gcc/builtins.c b/gcc/builtins.c
index c9e8e68..840ec29 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -630,11 +630,10 @@ target_char_cast (tree cst, char *p)
 {
   unsigned HOST_WIDE_INT val, hostval;

-  if (!host_integerp (cst, 1)
-      || CHAR_TYPE_SIZE > HOST_BITS_PER_WIDE_INT)
+  if (CHAR_TYPE_SIZE > HOST_BITS_PER_WIDE_INT)
     return 1;

-  val = tree_low_cst (cst, 1);
+  val = TREE_INT_CST_LOW (cst);
   if (CHAR_TYPE_SIZE < HOST_BITS_PER_WIDE_INT)
     val &= (((unsigned HOST_WIDE_INT) 1) << CHAR_TYPE_SIZE) - 1;
----

Reply via email to