]>
Commit | Line | Data |
---|---|---|
1c681c7b | 1 | /* { dg-do compile { target aarch64*-*-* i?86-*-* x86_64-*-* } } */ |
ebe8f322 | 2 | /* { dg-options "-fdump-rtl-ce1 -O2 -w --param max-rtl-if-conversion-unpredictable-cost=100" } */ |
1c681c7b | 3 | /* { dg-additional-options "-march=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ |
9b71b2ab KT |
4 | |
5 | typedef struct cpp_reader cpp_reader; | |
6 | enum cpp_ttype | |
7 | { | |
8 | CPP_EQ = | |
9 | 0, CPP_NOT, CPP_GREATER, CPP_LESS, CPP_PLUS, CPP_MINUS, CPP_MULT, CPP_DIV, | |
10 | CPP_MOD, CPP_AND, CPP_OR, CPP_XOR, CPP_RSHIFT, CPP_LSHIFT, CPP_MIN, | |
11 | CPP_MAX, CPP_COMPL, CPP_AND_AND, CPP_OR_OR, CPP_QUERY, CPP_COLON, | |
12 | CPP_COMMA, CPP_OPEN_PAREN, CPP_CLOSE_PAREN, CPP_EQ_EQ, CPP_NOT_EQ, | |
13 | CPP_GREATER_EQ, CPP_LESS_EQ, CPP_PLUS_EQ, CPP_MINUS_EQ, CPP_MULT_EQ, | |
14 | CPP_DIV_EQ, CPP_MOD_EQ, CPP_AND_EQ, CPP_OR_EQ, CPP_XOR_EQ, CPP_RSHIFT_EQ, | |
15 | CPP_LSHIFT_EQ, CPP_MIN_EQ, CPP_MAX_EQ, CPP_HASH, CPP_PASTE, | |
16 | CPP_OPEN_SQUARE, CPP_CLOSE_SQUARE, CPP_OPEN_BRACE, CPP_CLOSE_BRACE, | |
17 | CPP_SEMICOLON, CPP_ELLIPSIS, CPP_PLUS_PLUS, CPP_MINUS_MINUS, CPP_DEREF, | |
18 | CPP_DOT, CPP_SCOPE, CPP_DEREF_STAR, CPP_DOT_STAR, CPP_ATSIGN, CPP_NAME, | |
19 | CPP_NUMBER, CPP_CHAR, CPP_WCHAR, CPP_OTHER, CPP_STRING, CPP_WSTRING, | |
20 | CPP_HEADER_NAME, CPP_COMMENT, CPP_MACRO_ARG, CPP_PADDING, CPP_EOF, | |
21 | }; | |
22 | ||
23 | static struct op lex (cpp_reader *, int); | |
24 | ||
25 | struct op | |
26 | { | |
27 | enum cpp_ttype op; | |
28 | long value; | |
29 | }; | |
30 | ||
31 | int | |
32 | _cpp_parse_expr (pfile) | |
33 | { | |
34 | struct op init_stack[20]; | |
35 | struct op *stack = init_stack; | |
36 | struct op *top = stack + 1; | |
37 | int skip_evaluation = 0; | |
38 | for (;;) | |
39 | { | |
40 | struct op op; | |
41 | op = lex (pfile, skip_evaluation); | |
42 | switch (op.op) | |
43 | { | |
44 | case CPP_OR_OR: | |
45 | if (top->value) | |
46 | skip_evaluation++; | |
47 | else | |
48 | skip_evaluation--; | |
49 | } | |
50 | } | |
51 | } | |
52 | ||
53 | /* { dg-final { scan-rtl-dump "2 true changes made" "ce1" } } */ |