From 1ca3916f5688863f49976febd57b1a9640d1c71a Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 26 Oct 2011 15:31:16 -0400 Subject: [PATCH] build_string comments From-SVN: r180537 --- gcc/c-family/c-lex.c | 2 ++ gcc/cp/decl.c | 2 +- gcc/cp/parser.c | 1 + gcc/tree.c | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c index baee8eb9799c..7b220abd4b8c 100644 --- a/gcc/c-family/c-lex.c +++ b/gcc/c-family/c-lex.c @@ -344,6 +344,8 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, { tree suffix_id = get_identifier (suffix); int len = tok->val.str.len - strlen (suffix); + /* If this is going to be used as a C string to pass to a + raw literal operator, we need to add a trailing NUL. */ tree num_string = build_string (len + 1, (const char *) tok->val.str.text); TREE_TYPE (num_string) = char_array_type_node; diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 5ba50088684c..860556c21a94 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8592,7 +8592,7 @@ grokdeclarator (const cp_declarator *declarator, error ("declaration of %qD as non-function", dname); return error_mark_node; } - + if (dname && TREE_CODE (dname) == IDENTIFIER_NODE && UDLIT_OPER_P (dname) diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 840a30ddf650..090482cbd144 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3667,6 +3667,7 @@ cp_parser_userdef_numeric_literal (cp_parser *parser) /* Parse a user-defined string constant. Returns a call to a user-defined literal operator taking a character pointer and the length of the string as arguments. */ + static tree cp_parser_userdef_string_literal (cp_token *token) { diff --git a/gcc/tree.c b/gcc/tree.c index 64c496885758..2cbd68b5fd9b 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1525,6 +1525,7 @@ build_real_from_int_cst (tree type, const_tree i) /* Return a newly constructed STRING_CST node whose value is the LEN characters at STR. + Note that for a C string literal, LEN should include the trailing NUL. The TREE_TYPE is not initialized. */ tree -- 2.47.2