cparser
11 years agoRemove the write-only variable diagnostic_count.
Christoph Mallon [Wed, 13 Jun 2012 07:00:10 +0000 (09:00 +0200)]
Remove the write-only variable diagnostic_count.

11 years agoMake diagnosticvf() slightly more efficient by using fwrite() instead of printing...
Christoph Mallon [Wed, 13 Jun 2012 06:58:09 +0000 (08:58 +0200)]
Make diagnosticvf() slightly more efficient by using fwrite() instead of printing one character at a time.

12 years agoRemove the unused TP_PUNCTUATOR.
Christoph Mallon [Sun, 13 May 2012 11:18:25 +0000 (13:18 +0200)]
Remove the unused TP_PUNCTUATOR.

12 years agoRemove the unused field value from struct funcname_expression_t.
Christoph Mallon [Tue, 5 Jun 2012 06:35:47 +0000 (08:35 +0200)]
Remove the unused field value from struct funcname_expression_t.

12 years agoMerge EXPR_LITERAL_WIDE_CHARACTER into EXPR_LITERAL_CHARACTER.
Christoph Mallon [Wed, 23 May 2012 18:33:01 +0000 (20:33 +0200)]
Merge EXPR_LITERAL_WIDE_CHARACTER into EXPR_LITERAL_CHARACTER.

12 years agoUse struct string_literal_expression_t instead of struct literal_expression_t for...
Christoph Mallon [Wed, 23 May 2012 17:36:18 +0000 (19:36 +0200)]
Use struct string_literal_expression_t instead of struct literal_expression_t for character literals.

12 years agoAugment MATCH_NEWLINE() in the preprocessor so its usage looks like an ordinary case...
Christoph Mallon [Wed, 23 May 2012 19:19:09 +0000 (21:19 +0200)]
Augment MATCH_NEWLINE() in the preprocessor so its usage looks like an ordinary case label.

12 years agoReduce code duplication in parse_headername().
Christoph Mallon [Wed, 23 May 2012 19:42:26 +0000 (21:42 +0200)]
Reduce code duplication in parse_headername().

- Correct the error message, when the closing '"' is missing.

12 years agoMerge the implementations of parse_character_constant() and parse_string_literal().
Christoph Mallon [Wed, 23 May 2012 19:06:56 +0000 (21:06 +0200)]
Merge the implementations of parse_character_constant() and parse_string_literal().

- parse_character_constant() now honors resolve_escape_sequences.
- TP_STRING_LITERAL does not include the terminating NUL in its size anymore.

12 years agoMerge TP_WIDE_CHARACTER_CONSTANT into TP_CHARACTER_CONSTANT.
Christoph Mallon [Wed, 23 May 2012 18:49:45 +0000 (20:49 +0200)]
Merge TP_WIDE_CHARACTER_CONSTANT into TP_CHARACTER_CONSTANT.

- TP_CHARACTER_CONSTANT does not include the terminating NUL in its size anymore (TP_WIDE_CHARACTER_CONSTANT did this already).
- TP_CHARACTER_CONSTANT now includes all bytes of an extended char, not just its lowest.

12 years agoMerge TP_WIDE_STRING_LITERAL into TP_STRING_LITERAL.
Christoph Mallon [Wed, 23 May 2012 18:43:47 +0000 (20:43 +0200)]
Merge TP_WIDE_STRING_LITERAL into TP_STRING_LITERAL.

12 years agoRemove the unused T_WIDE_CHARACTER_CONSTANT.
Christoph Mallon [Wed, 23 May 2012 18:33:49 +0000 (20:33 +0200)]
Remove the unused T_WIDE_CHARACTER_CONSTANT.

12 years agoParse universal character names.
Christoph Mallon [Wed, 23 May 2012 07:50:54 +0000 (09:50 +0200)]
Parse universal character names.

12 years agoImplement %0*X in diagnosticvf().
Christoph Mallon [Wed, 23 May 2012 07:44:42 +0000 (09:44 +0200)]
Implement %0*X in diagnosticvf().

12 years agoTurn __FUNCTION__ into an alias for __func__.
Christoph Mallon [Wed, 23 May 2012 05:29:01 +0000 (07:29 +0200)]
Turn __FUNCTION__ into an alias for __func__.

12 years agoRemove the unused function expression_is_variable().
Christoph Mallon [Tue, 22 May 2012 19:42:56 +0000 (21:42 +0200)]
Remove the unused function expression_is_variable().

12 years agoImprove error recovery in parse_asm_statement().
Christoph Mallon [Tue, 22 May 2012 16:05:07 +0000 (18:05 +0200)]
Improve error recovery in parse_asm_statement().

12 years agoDo error recovery if parse_string_literals() is called while not at a string literal...
Christoph Mallon [Tue, 22 May 2012 15:47:46 +0000 (17:47 +0200)]
Do error recovery if parse_string_literals() is called while not at a string literal (before it did random stuff).

12 years agoFactorise code to skip till a given token kind.
Christoph Mallon [Tue, 22 May 2012 15:47:08 +0000 (17:47 +0200)]
Factorise code to skip till a given token kind.

12 years agoAugment MATCH_NEWLINE() so its usage looks like an ordinary case label.
Christoph Mallon [Tue, 22 May 2012 12:53:18 +0000 (14:53 +0200)]
Augment MATCH_NEWLINE() so its usage looks like an ordinary case label.

12 years agoMerge parsing character and string literals.
Christoph Mallon [Tue, 22 May 2012 12:16:41 +0000 (14:16 +0200)]
Merge parsing character and string literals.

12 years agoDo not include the terminating \0 in the size of T_STRING_LITERAL.
Christoph Mallon [Tue, 22 May 2012 09:02:16 +0000 (11:02 +0200)]
Do not include the terminating \0 in the size of T_STRING_LITERAL.

12 years agoRecord the encoding in string_literal_expression_t and merge EXPR_WIDE_STRING_LITERAL...
Christoph Mallon [Tue, 22 May 2012 08:47:16 +0000 (10:47 +0200)]
Record the encoding in string_literal_expression_t and merge EXPR_WIDE_STRING_LITERAL into EXPR_STRING_LITERAL.

12 years agoRemove ir_type_const_char and use ir_type_char instead.
Christoph Mallon [Tue, 22 May 2012 08:42:46 +0000 (10:42 +0200)]
Remove ir_type_const_char and use ir_type_char instead.

12 years agoCorrect several uses of expr->literal to expr->string_literal.
Christoph Mallon [Mon, 21 May 2012 10:51:28 +0000 (12:51 +0200)]
Correct several uses of expr->literal to expr->string_literal.

This was harmless, because the accessed field (value) has the same offset in both structs.

12 years agoMerge T_WIDE_CHARACTER_CONSTANT into T_CHARACTER_CONSTANT.
Christoph Mallon [Mon, 21 May 2012 06:43:24 +0000 (08:43 +0200)]
Merge T_WIDE_CHARACTER_CONSTANT into T_CHARACTER_CONSTANT.

12 years agoAdd the field encoding to struct string_literal_t and merge T_WIDE_STRING_LITERAL...
Christoph Mallon [Mon, 21 May 2012 06:29:49 +0000 (08:29 +0200)]
Add the field encoding to struct string_literal_t and merge T_WIDE_STRING_LITERAL into T_STRING_LITERAL.

12 years agoRework string literal concatenation.
Christoph Mallon [Mon, 21 May 2012 05:37:23 +0000 (07:37 +0200)]
Rework string literal concatenation.

- Now it is linear in the number of strings instead of quadratic.
- "" L"" "" incorrectly resulted in a normal string.
- When a plain string is expected, produce a better error message if a wide string is encountered.

12 years agoRename [LR]BRACE to [LR]PAREN.
Christoph Mallon [Sun, 20 May 2012 16:56:15 +0000 (18:56 +0200)]
Rename [LR]BRACE to [LR]PAREN.

"Brace" usually refers to curly braces.

12 years agoCorrect confusion of token mames: L designates an opening parenthesis, R a closing...
Christoph Mallon [Sun, 20 May 2012 16:54:31 +0000 (18:54 +0200)]
Correct confusion of token mames: L designates an opening parenthesis, R a closing one.

12 years agoDo not crash if the expression of an array designator is not constant.
Christoph Mallon [Sun, 20 May 2012 16:53:23 +0000 (18:53 +0200)]
Do not crash if the expression of an array designator is not constant.

12 years agoImprove error recovery in get_label().
Christoph Mallon [Sun, 20 May 2012 07:28:26 +0000 (09:28 +0200)]
Improve error recovery in get_label().

12 years agoIn parse_namespace_definition() always discard the found entity when it is not a...
Christoph Mallon [Sun, 20 May 2012 06:33:52 +0000 (08:33 +0200)]
In parse_namespace_definition() always discard the found entity when it is not a namespace, not only when it is in the current scope, too.

12 years agoCorrect off-by-one-token error in parse_namespace_definition().
Christoph Mallon [Sun, 20 May 2012 06:15:04 +0000 (08:15 +0200)]
Correct off-by-one-token error in parse_namespace_definition().

12 years agoImprove error recovery in parse_local_label_declaration().
Christoph Mallon [Sun, 20 May 2012 06:07:38 +0000 (08:07 +0200)]
Improve error recovery in parse_local_label_declaration().

12 years agoRemove redundant assignment of the source position.
Christoph Mallon [Sun, 20 May 2012 06:03:21 +0000 (08:03 +0200)]
Remove redundant assignment of the source position.

12 years agoReduce code duplication in parse_compare_builtin().
Christoph Mallon [Sun, 20 May 2012 05:57:32 +0000 (07:57 +0200)]
Reduce code duplication in parse_compare_builtin().

12 years agoReduce code duplication for parsing __func__ and friends.
Christoph Mallon [Sun, 20 May 2012 05:51:15 +0000 (07:51 +0200)]
Reduce code duplication for parsing __func__ and friends.

12 years agoImprove error recovery by adding anchor tokens earlier.
Christoph Mallon [Sat, 19 May 2012 10:35:34 +0000 (12:35 +0200)]
Improve error recovery by adding anchor tokens earlier.

12 years agoPrefer eat(token) over next_token().
Christoph Mallon [Sat, 19 May 2012 10:33:24 +0000 (12:33 +0200)]
Prefer eat(token) over next_token().

12 years agoPrefer HERE over &token.base.source_position.
Christoph Mallon [Sat, 19 May 2012 10:29:24 +0000 (12:29 +0200)]
Prefer HERE over &token.base.source_position.

12 years agoCheck for dangling % in format strings after consuming modifiers.
Christoph Mallon [Sat, 19 May 2012 07:18:48 +0000 (09:18 +0200)]
Check for dangling % in format strings after consuming modifiers.

12 years agoImprove -Wformat warning message: Show the expected type.
Christoph Mallon [Fri, 18 May 2012 20:48:35 +0000 (22:48 +0200)]
Improve -Wformat warning message: Show the expected type.

12 years agoCorrect expected type in check_scanf_format().
Christoph Mallon [Fri, 18 May 2012 20:59:28 +0000 (22:59 +0200)]
Correct expected type in check_scanf_format().

The listed types must be the pointed-to types.

12 years agoCorrect typo in comment.
Christoph Mallon [Thu, 17 May 2012 18:14:26 +0000 (20:14 +0200)]
Correct typo in comment.

12 years agoDo not report an error, if the second argument to __builtin_va_start() has error...
Christoph Mallon [Thu, 17 May 2012 17:52:56 +0000 (19:52 +0200)]
Do not report an error, if the second argument to __builtin_va_start() has error type.

12 years agoDo not silenty create an error expression, if the second argument of __builtin_va_sta...
Christoph Mallon [Thu, 17 May 2012 17:42:22 +0000 (19:42 +0200)]
Do not silenty create an error expression, if the second argument of __builtin_va_start() is not a reference expression, but report an error.

12 years agoReport an error if __builtin_va_start() is used in a non-variadic function, even...
Christoph Mallon [Thu, 17 May 2012 17:03:02 +0000 (19:03 +0200)]
Report an error if __builtin_va_start() is used in a non-variadic function, even if its second argument is not a reference expression.

Also show the position of __builtin_va_start, not its second argument, as the location of the error.

12 years agoDo not crash, when __builtin_va_start() is used outside of a function and report...
Christoph Mallon [Thu, 17 May 2012 16:57:48 +0000 (18:57 +0200)]
Do not crash, when __builtin_va_start() is used outside of a function and report an error instead.

12 years agoStore the whole second argument expression of __builtin_va_start(), not just a variab...
Christoph Mallon [Thu, 17 May 2012 13:57:00 +0000 (15:57 +0200)]
Store the whole second argument expression of __builtin_va_start(), not just a variable_t.

12 years agoRename "expr" to "param" in parse_va_start().
Christoph Mallon [Thu, 17 May 2012 17:57:16 +0000 (19:57 +0200)]
Rename "expr" to "param" in parse_va_start().

12 years agoFirst finish parsing, then do semantic checks in parse_va_start().
Christoph Mallon [Thu, 17 May 2012 17:56:49 +0000 (19:56 +0200)]
First finish parsing, then do semantic checks in parse_va_start().

12 years agopreprocessor tests moved to testsuite
Matthias Braun [Fri, 18 May 2012 23:54:17 +0000 (01:54 +0200)]
preprocessor tests moved to testsuite

12 years agopreprocessor: rework headername parsing
Matthias Braun [Fri, 18 May 2012 23:54:57 +0000 (01:54 +0200)]
preprocessor: rework headername parsing

12 years agopreprocessor: correctly implement "" includes
Matthias Braun [Fri, 18 May 2012 21:37:11 +0000 (23:37 +0200)]
preprocessor: correctly implement "" includes

12 years agopreprocessor: implement -o in pptest
Matthias Braun [Fri, 18 May 2012 21:15:11 +0000 (23:15 +0200)]
preprocessor: implement -o in pptest

12 years agoset layouted earlier to break cycles
Matthias Braun [Fri, 18 May 2012 16:45:08 +0000 (18:45 +0200)]
set layouted earlier to break cycles

Otherwise the compiler can crash for recursive structs

12 years agoImplement reference_expression_to_firm() by using reference_addr() in most cases.
Christoph Mallon [Wed, 16 May 2012 05:05:40 +0000 (07:05 +0200)]
Implement reference_expression_to_firm() by using reference_addr() in most cases.

- Correct the problem, that implicitly taking the address of a builtin function (without &) works, but using & panics by moving the special case handling to reference_addr().
- Reduces code duplication.

12 years agoUse the same struct variable_t for variable and parameter entities.
Christoph Mallon [Wed, 16 May 2012 04:53:40 +0000 (06:53 +0200)]
Use the same struct variable_t for variable and parameter entities.

They behave mostly the same, so this gets rid of some code duplication.

12 years agoUse %N to print entities.
Christoph Mallon [Tue, 15 May 2012 08:39:03 +0000 (10:39 +0200)]
Use %N to print entities.

12 years agoRemove duplicate word from error message.
Christoph Mallon [Tue, 15 May 2012 08:14:43 +0000 (10:14 +0200)]
Remove duplicate word from error message.

%N prints the entity kind, too.

12 years agoPrint entities (%N) instead of just symbols (%Y).
Christoph Mallon [Tue, 8 May 2012 13:54:05 +0000 (15:54 +0200)]
Print entities (%N) instead of just symbols (%Y).

12 years agoClean up parse_pragma().
Christoph Mallon [Sun, 13 May 2012 22:28:10 +0000 (00:28 +0200)]
Clean up parse_pragma().

12 years agoSimplify a check in parse_ifdef_ifndef_directive().
Christoph Mallon [Sun, 13 May 2012 21:43:48 +0000 (23:43 +0200)]
Simplify a check in parse_ifdef_ifndef_directive().

12 years agoBefore printing a token using its kind, check whether it has a symbol and print this...
Christoph Mallon [Sun, 13 May 2012 21:30:43 +0000 (23:30 +0200)]
Before printing a token using its kind, check whether it has a symbol and print this instead.

This makes a difference when there are different spellings for the same token.

12 years agoMove the symbol to token_base_t.
Christoph Mallon [Sun, 13 May 2012 21:27:46 +0000 (23:27 +0200)]
Move the symbol to token_base_t.

- This way all identifier-like tokens (identifiers and keywords) can be identified easily.
- This unbreaks parse_attribute_gnu_single(), if the attribute argument is (erroneously) a punctuator.

12 years agovariables are definition if they are not extern
Matthias Braun [Thu, 10 May 2012 18:35:12 +0000 (20:35 +0200)]
variables are definition if they are not extern

12 years agoalso pass language standard to the preprocessor
Matthias Braun [Wed, 9 May 2012 13:25:23 +0000 (15:25 +0200)]
also pass language standard to the preprocessor

12 years agoRemove the typedef for the non-existent type_argument_t.
Christoph Mallon [Tue, 8 May 2012 08:20:26 +0000 (10:20 +0200)]
Remove the typedef for the non-existent type_argument_t.

12 years agoImprove pretty printing: Do not print () around subexpressions consisting of a single...
Christoph Mallon [Fri, 20 Apr 2012 17:45:42 +0000 (19:45 +0200)]
Improve pretty printing: Do not print () around subexpressions consisting of a single token, even when in full parenthesization mode.

12 years agoImplement a GCC extension: binary constants 0[bB][01]+.
Christoph Mallon [Sun, 6 May 2012 17:37:44 +0000 (19:37 +0200)]
Implement a GCC extension: binary constants 0[bB][01]+.

12 years agoRemove the unnecessary distinction between T_FLOATINGPOINT and T_FLOATINGPOINT_HEXADE...
Christoph Mallon [Sun, 6 May 2012 17:33:28 +0000 (19:33 +0200)]
Remove the unnecessary distinction between T_FLOATINGPOINT and T_FLOATINGPOINT_HEXADECIMAL.

Just keep T_FLOATINGPOINT.

12 years agoRemove the unnecessary distinction between T_INTEGER, T_INTEGER_HEXADECIMAL and T_INT...
Christoph Mallon [Sun, 6 May 2012 17:25:33 +0000 (19:25 +0200)]
Remove the unnecessary distinction between T_INTEGER, T_INTEGER_HEXADECIMAL and T_INTEGER_OCTAL.

Just keep T_INTEGER.

12 years agoRemove the unnecessary distinction between EXPR_LITERAL_FLOATINGPOINT and EXPR_LITERA...
Christoph Mallon [Sun, 6 May 2012 17:28:45 +0000 (19:28 +0200)]
Remove the unnecessary distinction between EXPR_LITERAL_FLOATINGPOINT and EXPR_LITERAL_FLOATINGPOINT_HEXADECIMAL.

Just keep EXPR_LITERAL_FLOATINGPOINT.

12 years agoRemove the (mostly) unnecessary distinction between EXPR_LITERAL_INTEGER, EXPR_LITERA...
Christoph Mallon [Sun, 6 May 2012 17:17:51 +0000 (19:17 +0200)]
Remove the (mostly) unnecessary distinction between EXPR_LITERAL_INTEGER, EXPR_LITERAL_INTEGER_HEXADECIMAL and EXPR_LITERAL_INTEGER_OCTAL.

- Just keep EXPR_LITERAL_INTEGER.
- Only in create_integer_tarval() it is necessary to know, whether an integer constant ist decimal, but this test is easy (first char != '0').

12 years agoDo not strip the 0x prefix from the textual representation of hexadecimal constants.
Christoph Mallon [Sun, 6 May 2012 17:00:27 +0000 (19:00 +0200)]
Do not strip the 0x prefix from the textual representation of hexadecimal constants.

In particular this adds the missing prefix in print_token().

12 years agoRemove redundant test.
Christoph Mallon [Sun, 6 May 2012 17:12:27 +0000 (19:12 +0200)]
Remove redundant test.

The loop condition in print_stringrep() tests the same.

12 years agoSimplify how testing for signed/unsigned is encoded in create_integer_tarval().
Christoph Mallon [Sun, 6 May 2012 16:32:47 +0000 (18:32 +0200)]
Simplify how testing for signed/unsigned is encoded in create_integer_tarval().

12 years agoReport an error, if the exponent of a floating point constant has no digits.
Christoph Mallon [Sun, 6 May 2012 13:14:30 +0000 (15:14 +0200)]
Report an error, if the exponent of a floating point constant has no digits.

12 years agoCorrect parsing of the exponent of hexadecimal floating point constants: The number...
Christoph Mallon [Sun, 6 May 2012 13:12:36 +0000 (15:12 +0200)]
Correct parsing of the exponent of hexadecimal floating point constants: The number is base 10, not 16.

12 years agoHandle forcing the LINKAGE_C for main() in the parser, not ast2firm.
Christoph Mallon [Sun, 6 May 2012 09:45:50 +0000 (11:45 +0200)]
Handle forcing the LINKAGE_C for main() in the parser, not ast2firm.

12 years agoReplace is_sym_main() by is_main().
Christoph Mallon [Sat, 5 May 2012 17:28:23 +0000 (19:28 +0200)]
Replace is_sym_main() by is_main().

12 years agoWrap setting current_entity in PUSH_CURRENT_ENTITY() and POP_CURRENT_ENTITY().
Christoph Mallon [Sat, 5 May 2012 16:29:28 +0000 (18:29 +0200)]
Wrap setting current_entity in PUSH_CURRENT_ENTITY() and POP_CURRENT_ENTITY().

12 years agoDo not suppress warnings about unused parameters of main().
Christoph Mallon [Sat, 5 May 2012 08:02:52 +0000 (10:02 +0200)]
Do not suppress warnings about unused parameters of main().

This was added with the claim that gcc suppresses them, but apparently it does not.

12 years agoPass -x instead of incorrectly -std to the preprocessor.
Christoph Mallon [Sat, 5 May 2012 06:42:39 +0000 (08:42 +0200)]
Pass -x instead of incorrectly -std to the preprocessor.

12 years agoRemove the unnecessary special case for __alignof__(function) from alignof_to_firm().
Christoph Mallon [Sat, 5 May 2012 06:26:23 +0000 (08:26 +0200)]
Remove the unnecessary special case for __alignof__(function) from alignof_to_firm().

Functions have the "right" alignment set.

12 years agoRemove dead assignment.
Christoph Mallon [Sat, 5 May 2012 05:55:38 +0000 (07:55 +0200)]
Remove dead assignment.

12 years agoMake prepare_main_collect2() static.
Christoph Mallon [Sat, 5 May 2012 05:31:52 +0000 (07:31 +0200)]
Make prepare_main_collect2() static.

12 years agoSimplify get_symbol_from_token(): All keywords have symbols.
Christoph Mallon [Fri, 4 May 2012 17:48:43 +0000 (19:48 +0200)]
Simplify get_symbol_from_token(): All keywords have symbols.

12 years agoRemove T_ERROR and TP_ERROR.
Christoph Mallon [Fri, 4 May 2012 17:47:04 +0000 (19:47 +0200)]
Remove T_ERROR and TP_ERROR.

12 years agoImprove error recovery in parse_parameters().
Christoph Mallon [Sat, 5 May 2012 15:43:27 +0000 (17:43 +0200)]
Improve error recovery in parse_parameters().

12 years agoDo not remove comma from the anchor set in parse_parameters().
Christoph Mallon [Fri, 4 May 2012 17:21:38 +0000 (19:21 +0200)]
Do not remove comma from the anchor set in parse_parameters().

12 years agoUpdate libfirm, which corrects the handling of externally visible, but locally define...
Christoph Mallon [Sat, 5 May 2012 21:08:28 +0000 (23:08 +0200)]
Update libfirm, which corrects the handling of externally visible, but locally defined, variables.

12 years agoUpdate libfirm to unbreak PIC.
Christoph Mallon [Sat, 5 May 2012 15:38:42 +0000 (17:38 +0200)]
Update libfirm to unbreak PIC.

12 years agoadapt to latest libfirm version, fix inline semantic
Matthias Braun [Fri, 4 May 2012 12:45:58 +0000 (14:45 +0200)]
adapt to latest libfirm version, fix inline semantic

12 years agoinline is known to GNU89
Matthias Braun [Fri, 4 May 2012 12:44:03 +0000 (14:44 +0200)]
inline is known to GNU89

12 years agoAdd scopes to iteration and selection statements.
Christoph Mallon [Fri, 4 May 2012 07:30:53 +0000 (09:30 +0200)]
Add scopes to iteration and selection statements.

12 years agoFactorise code to create local declarations.
Christoph Mallon [Fri, 4 May 2012 07:17:56 +0000 (09:17 +0200)]
Factorise code to create local declarations.

12 years agoImprove error recovery in parse_if() by adding T_else to the anchors earlier.
Christoph Mallon [Thu, 3 May 2012 16:22:04 +0000 (18:22 +0200)]
Improve error recovery in parse_if() by adding T_else to the anchors earlier.

Also remove the unnecessary anchor '{'.

12 years agoEnter constant folding mode only in one place, i.e. fold_constant_to_tarval(), not...
Christoph Mallon [Sat, 28 Apr 2012 15:25:10 +0000 (17:25 +0200)]
Enter constant folding mode only in one place, i.e. fold_constant_to_tarval(), not in expression_to_firm(), too.