From: Alan Modra Date: Mon, 9 Nov 2015 04:17:53 +0000 (+1030) Subject: New obstack_next_free is not an lvalue X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c240b3e0de184a2bbb4f78e86126bee4748ab147;p=gcc.git New obstack_next_free is not an lvalue New obstack.h casts obstack_next_free to (void *), resulting in it being a non-lvalue, and warnings on pointer arithmetic. gcc/ * gensupport.c (add_mnemonic_string): Make len param a size_t. (gen_mnemonic_setattr): Make "size" var a size_t. Use obstack_blank_fast to shrink obstack. Cast obstack_next_free return value. gcc/objc/ * objc-encoding.c (encode_aggregate_within): Cast obstack_next_free return value. From-SVN: r229984 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dcb6d55ca6b..dfb83509b1a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-11-09 Alan Modra + + * gensupport.c (add_mnemonic_string): Make len param a size_t. + (gen_mnemonic_setattr): Make "size" var a size_t. Use + obstack_blank_fast to shrink obstack. Cast obstack_next_free + return value. + 2015-11-09 Segher Boessenkool PR rtl-optimization/68182 diff --git a/gcc/gensupport.c b/gcc/gensupport.c index 0480e17fac3..484ead2f3e7 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -2253,7 +2253,7 @@ htab_eq_string (const void *s1, const void *s2) and a permanent heap copy of STR is created. */ static void -add_mnemonic_string (htab_t mnemonic_htab, const char *str, int len) +add_mnemonic_string (htab_t mnemonic_htab, const char *str, size_t len) { char *new_str; void **slot; @@ -2306,7 +2306,7 @@ gen_mnemonic_setattr (htab_t mnemonic_htab, rtx insn) for (i = 0; *cp; ) { const char *ep, *sp; - int size = 0; + size_t size = 0; while (ISSPACE (*cp)) cp++; @@ -2333,8 +2333,7 @@ gen_mnemonic_setattr (htab_t mnemonic_htab, rtx insn) { /* Don't set a value if there are more than one instruction in the string. */ - obstack_next_free (&string_obstack) = - obstack_next_free (&string_obstack) - size; + obstack_blank_fast (&string_obstack, -size); size = 0; cp = sp; @@ -2346,7 +2345,7 @@ gen_mnemonic_setattr (htab_t mnemonic_htab, rtx insn) obstack_1grow (&string_obstack, '*'); else add_mnemonic_string (mnemonic_htab, - obstack_next_free (&string_obstack) - size, + (char *) obstack_next_free (&string_obstack) - size, size); i++; } diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 23721f60005..57b5db48bcb 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,8 @@ +2015-11-09 Alan Modra + + * objc-encoding.c (encode_aggregate_within): Cast obstack_next_free + return value. + 2015-10-29 Andrew MacLeod * objc-lang.c: Reorder #include's and remove duplicates. diff --git a/gcc/objc/objc-encoding.c b/gcc/objc/objc-encoding.c index 48480213534..9c577e93bae 100644 --- a/gcc/objc/objc-encoding.c +++ b/gcc/objc/objc-encoding.c @@ -495,13 +495,14 @@ encode_aggregate_within (tree type, int curtype, int format, int left, if (flag_next_runtime) { - if (ob_size > 0 && *(obstack_next_free (&util_obstack) - 1) == '^') + if (ob_size > 0 + && *((char *) obstack_next_free (&util_obstack) - 1) == '^') pointed_to = true; if ((format == OBJC_ENCODE_INLINE_DEFS || generating_instance_variables) && (!pointed_to || ob_size - curtype == 1 || (ob_size - curtype == 2 - && *(obstack_next_free (&util_obstack) - 2) == 'r'))) + && *((char *) obstack_next_free (&util_obstack) - 2) == 'r'))) inline_contents = true; } else @@ -512,9 +513,10 @@ encode_aggregate_within (tree type, int curtype, int format, int left, comment above applies: in that case we should avoid encoding the names of instance variables. */ - char c1 = ob_size > 1 ? *(obstack_next_free (&util_obstack) - 2) : 0; - char c0 = ob_size > 0 ? *(obstack_next_free (&util_obstack) - 1) : 0; + char c0, c1; + c1 = ob_size > 1 ? *((char *) obstack_next_free (&util_obstack) - 2) : 0; + c0 = ob_size > 0 ? *((char *) obstack_next_free (&util_obstack) - 1) : 0; if (c0 == '^' || (c1 == '^' && c0 == 'r')) pointed_to = true;