* 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
+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
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>
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);
/* 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. */
{
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;
#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 *);
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;
}