Commit 618400bc by Nathan Sidwell

ggc.h (empty_string): Delete.

	* ggc.h (empty_string): Delete.
	* cfgexpand.c (expand_asm_stmt): Use plain "".
	* optabs.c (expand_asm_memory_barrier): Likewise.
	* stringpool.c (empty_string): Delete.
	(digit_vector, digit_string): Delete.
	(ggc_alloc_string): Use plain "", don't optimize single digit
	strings.  Use ggc_alloc_atomic.

From-SVN: r249851
parent 84682fd2
2017-06-30 Nathan Sidwell <nathan@acm.org>
* ggc.h (empty_string): Delete.
* cfgexpand.c (expand_asm_stmt): Use plain "".
* optabs.c (expand_asm_memory_barrier): Likewise.
* stringpool.c (empty_string): Delete.
(digit_vector, digit_string): Delete.
(ggc_alloc_string): Use plain "", don't optimize single digit
strings. Use ggc_alloc_atomic.
2017-06-30 Richard Earnshaw <rearnsha@arm.com> 2017-06-30 Richard Earnshaw <rearnsha@arm.com>
* rtlanal.c (insn_rtx_cost): If a parallel contains exactly one * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
...@@ -26,15 +36,15 @@ ...@@ -26,15 +36,15 @@
2017-06-30 Jakub Jelinek <jakub@redhat.com> 2017-06-30 Jakub Jelinek <jakub@redhat.com>
PR target/81225 PR target/81225
* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
V8FI, V16FI and VI8F_256 iterators, use <store_mask_predicate> instead V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
of nonimmediate_operand and <store_mask_constraint> instead of m for of nonimmediate_operand and <store_mask_constraint> instead of m
the input operand. For V8FI iterator, always split if input is a MEM. for the input operand. For V8FI iterator, always split if input
For V16FI and V8SF_256 iterators, don't test if both operands are MEM is a MEM. For V16FI and V8SF_256 iterators, don't test if both
if <mask_applied>. For VI4F_256 iterator, use <store_mask_predicate> operands are MEM if <mask_applied>. For VI4F_256 iterator, use
instead of register_operand and <store_mask_constraint> instead of v for <store_mask_predicate> instead of register_operand and
the input operand. Make sure both operands aren't MEMs for if not <store_mask_constraint> instead of v for the input operand. Make
<mask_applied>. sure both operands aren't MEMs for if not <mask_applied>.
2017-06-30 Sylvestre Ledru <sylvestre@debian.org> 2017-06-30 Sylvestre Ledru <sylvestre@debian.org>
......
...@@ -3165,7 +3165,7 @@ expand_asm_stmt (gasm *stmt) ...@@ -3165,7 +3165,7 @@ expand_asm_stmt (gasm *stmt)
rtx body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode rtx body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode
: GET_MODE (output_rvec[0])), : GET_MODE (output_rvec[0])),
ggc_strdup (gimple_asm_string (stmt)), ggc_strdup (gimple_asm_string (stmt)),
empty_string, 0, argvec, constraintvec, "", 0, argvec, constraintvec,
labelvec, locus); labelvec, locus);
MEM_VOLATILE_P (body) = gimple_asm_volatile_p (stmt); MEM_VOLATILE_P (body) = gimple_asm_volatile_p (stmt);
......
...@@ -24,9 +24,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -24,9 +24,6 @@ along with GCC; see the file COPYING3. If not see
/* Symbols are marked with `ggc' for `gcc gc' so as not to interfere with /* Symbols are marked with `ggc' for `gcc gc' so as not to interfere with
an external gc library that might be linked in. */ an external gc library that might be linked in. */
/* Constants for general use. */
extern const char empty_string[]; /* empty string */
/* Internal functions and data structures used by the GTY /* Internal functions and data structures used by the GTY
machinery, including the generated gt*.[hc] files. */ machinery, including the generated gt*.[hc] files. */
......
...@@ -6278,7 +6278,7 @@ expand_asm_memory_barrier (void) ...@@ -6278,7 +6278,7 @@ expand_asm_memory_barrier (void)
{ {
rtx asm_op, clob; rtx asm_op, clob;
asm_op = gen_rtx_ASM_OPERANDS (VOIDmode, empty_string, empty_string, 0, asm_op = gen_rtx_ASM_OPERANDS (VOIDmode, "", "", 0,
rtvec_alloc (0), rtvec_alloc (0), rtvec_alloc (0), rtvec_alloc (0),
rtvec_alloc (0), UNKNOWN_LOCATION); rtvec_alloc (0), UNKNOWN_LOCATION);
MEM_VOLATILE_P (asm_op) = 1; MEM_VOLATILE_P (asm_op) = 1;
......
...@@ -30,18 +30,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -30,18 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h" #include "coretypes.h"
#include "tree.h" #include "tree.h"
/* The "" allocated string. */
const char empty_string[] = "";
/* Character strings, each containing a single decimal digit.
Written this way to save space. */
static const char digit_vector[] = {
'0', 0, '1', 0, '2', 0, '3', 0, '4', 0,
'5', 0, '6', 0, '7', 0, '8', 0, '9', 0
};
#define digit_string(d) (digit_vector + ((d) * 2))
struct ht *ident_hash; struct ht *ident_hash;
static hashnode alloc_node (cpp_hash_table *); static hashnode alloc_node (cpp_hash_table *);
...@@ -82,19 +70,16 @@ alloc_node (cpp_hash_table *table ATTRIBUTE_UNUSED) ...@@ -82,19 +70,16 @@ alloc_node (cpp_hash_table *table ATTRIBUTE_UNUSED)
const char * const char *
ggc_alloc_string (const char *contents, int length MEM_STAT_DECL) ggc_alloc_string (const char *contents, int length MEM_STAT_DECL)
{ {
char *result;
if (length == -1) if (length == -1)
length = strlen (contents); length = strlen (contents);
if (length == 0) if (!length)
return empty_string; return "";
if (length == 1 && ISDIGIT (contents[0]))
return digit_string (contents[0] - '0');
result = (char *) ggc_internal_cleared_alloc (length + 1 PASS_MEM_STAT); char *result = (char *) ggc_alloc_atomic (length + 1);
memcpy (result, contents, length); memcpy (result, contents, length);
result[length] = '\0'; result[length] = '\0';
return (const char *) result; return (const char *) result;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment