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;
----