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
This commit is contained in:
Nathan Sidwell 2017-06-30 17:00:46 +00:00
parent 84682fd249
commit 618400bc14
5 changed files with 25 additions and 33 deletions

View file

@ -1,3 +1,13 @@
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>
* rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
@ -26,15 +36,15 @@
2017-06-30 Jakub Jelinek <jakub@redhat.com>
PR target/81225
* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For
V8FI, V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
of nonimmediate_operand and <store_mask_constraint> instead of m for
the input operand. For V8FI iterator, always split if input is a MEM.
For V16FI and V8SF_256 iterators, don't test if both operands are MEM
if <mask_applied>. For VI4F_256 iterator, use <store_mask_predicate>
instead of register_operand and <store_mask_constraint> instead of v for
the input operand. Make sure both operands aren't MEMs for if not
<mask_applied>.
* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
of nonimmediate_operand and <store_mask_constraint> instead of m
for the input operand. For V8FI iterator, always split if input
is a MEM. For V16FI and V8SF_256 iterators, don't test if both
operands are MEM if <mask_applied>. For VI4F_256 iterator, use
<store_mask_predicate> instead of register_operand and
<store_mask_constraint> instead of v for the input operand. Make
sure both operands aren't MEMs for if not <mask_applied>.
2017-06-30 Sylvestre Ledru <sylvestre@debian.org>

View file

@ -3165,7 +3165,7 @@ expand_asm_stmt (gasm *stmt)
rtx body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode
: GET_MODE (output_rvec[0])),
ggc_strdup (gimple_asm_string (stmt)),
empty_string, 0, argvec, constraintvec,
"", 0, argvec, constraintvec,
labelvec, locus);
MEM_VOLATILE_P (body) = gimple_asm_volatile_p (stmt);

View file

@ -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
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
machinery, including the generated gt*.[hc] files. */

View file

@ -6278,7 +6278,7 @@ expand_asm_memory_barrier (void)
{
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), UNKNOWN_LOCATION);
MEM_VOLATILE_P (asm_op) = 1;

View file

@ -30,18 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.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;
static hashnode alloc_node (cpp_hash_table *);
@ -82,19 +70,16 @@ alloc_node (cpp_hash_table *table ATTRIBUTE_UNUSED)
const char *
ggc_alloc_string (const char *contents, int length MEM_STAT_DECL)
{
char *result;
if (length == -1)
length = strlen (contents);
if (length == 0)
return empty_string;
if (length == 1 && ISDIGIT (contents[0]))
return digit_string (contents[0] - '0');
if (!length)
return "";
result = (char *) ggc_internal_cleared_alloc (length + 1 PASS_MEM_STAT);
char *result = (char *) ggc_alloc_atomic (length + 1);
memcpy (result, contents, length);
result[length] = '\0';
return (const char *) result;
}