#include "coretypes.h"
#include "tm.h"
-#include "real.h"
-#include "rtl.h"
#include "tree.h"
#include "input.h"
#include "output.h"
#include "c-pragma.h"
#include "toplev.h"
#include "intl.h"
-#include "tm_p.h"
#include "splay-tree.h"
#include "debug.h"
#include "target.h"
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
+ case CPP_UTF8STRING:
type = lex_string (tok, value, true, true);
break;
case CPP_HASH:
case CPP_PASTE:
{
- unsigned char name[4];
+ unsigned char name[8];
*cpp_spell_token (parse_in, tok, name, true) = 0;
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
- if ((lex_flags & C_LEX_RAW_STRINGS) == 0)
+ case CPP_UTF8STRING:
+ if ((lex_flags & C_LEX_STRING_NO_JOIN) == 0)
{
type = lex_string (tok, value, false,
(lex_flags & C_LEX_STRING_NO_TRANSLATE) == 0);
}
*value = build_string (tok->val.str.len, (const char *) tok->val.str.text);
break;
-
+
case CPP_PRAGMA:
*value = build_int_cst (NULL, tok->val.pragma);
break;
type = integer_types[itk];
if (itk > itk_unsigned_long
&& (flags & CPP_N_WIDTH) != CPP_N_LARGE)
- emit_diagnostic
+ emit_diagnostic
((c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99)
? DK_PEDWARN : DK_WARNING,
input_location, OPT_Wlong_long,
- (flags & CPP_N_UNSIGNED)
+ (flags & CPP_N_UNSIGNED)
? "integer constant is too large for %<unsigned long%> type"
: "integer constant is too large for %<long%> type");
}
has any suffixes, cut them off; REAL_VALUE_ATOF/ REAL_VALUE_HTOF
can't handle them. */
copylen = token->val.str.len;
- if (flags & CPP_N_DFLOAT)
+ if (flags & CPP_N_DFLOAT)
copylen -= 2;
- else
+ else
{
if ((flags & CPP_N_WIDTH) != CPP_N_MEDIUM)
/* Must be an F or L or machine defined suffix. */
{
REAL_VALUE_TYPE realvoidmode;
int overflow = real_from_string (&realvoidmode, copy);
- if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0))
+ if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0))
warning (OPT_Woverflow, "floating constant truncated to zero");
}
return value;
}
-/* Convert a series of STRING, WSTRING, STRING16 and/or STRING32 tokens
- into a tree, performing string constant concatenation. TOK is the
- first of these. VALP is the location to write the string into.
- OBJC_STRING indicates whether an '@' token preceded the incoming token.
+/* Convert a series of STRING, WSTRING, STRING16, STRING32 and/or
+ UTF8STRING tokens into a tree, performing string constant
+ concatenation. TOK is the first of these. VALP is the location
+ to write the string into. OBJC_STRING indicates whether an '@' token
+ preceded the incoming token.
Returns the CPP token type of the result (CPP_STRING, CPP_WSTRING,
- CPP_STRING32, CPP_STRING16, or CPP_OBJC_STRING).
+ CPP_STRING32, CPP_STRING16, CPP_UTF8STRING, or CPP_OBJC_STRING).
This is unfortunately more work than it should be. If any of the
strings in the series has an L prefix, the result is a wide string
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
+ case CPP_UTF8STRING:
if (type != tok->type)
{
if (type == CPP_STRING)
{
default:
case CPP_STRING:
+ case CPP_UTF8STRING:
value = build_string (1, "");
break;
case CPP_STRING16:
{
default:
case CPP_STRING:
+ case CPP_UTF8STRING:
TREE_TYPE (value) = char_array_type_node;
break;
case CPP_STRING16: