Commit Graph

130108 Commits

Author SHA1 Message Date
Eric Botcazou 7eab31edf2 tree-ssa-dom.c (hashable_expr_equal_p): Also compare the EH region of calls to pure functions that can throw an exception.
* tree-ssa-dom.c (hashable_expr_equal_p) <EXPR_CALL>: Also compare the
	EH region of calls to pure functions that can throw an exception.
	* tree-ssa-sccvn.c (vn_reference_eq): Remove duplicated test.
	(copy_reference_ops_from_call): Also copy the EH region of the call if
	it can throw an exception.

From-SVN: r210649
2014-05-20 17:01:35 +00:00
Nick Clifton 467fc67c47 msp430.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
* config/msp430/msp430.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
	(msp430_gimplify_va_arg_expr): New function.
	(msp430_print_operand): Handle (CONST (ZERO_EXTRACT)).

From-SVN: r210648
2014-05-20 16:51:58 +00:00
Paolo Carlini 512eacee8f re PR c++/60373 (half warning: visibility attribute ignored because it)
/cp
2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60373
	* decl.c (duplicate_decls): Replace pair of warning_at with
	warning_at + inform.
	(maybe_commonize_var): Likewise.

/testsuite
2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60373
	* g++.dg/cpp0x/Wattributes1.C: New.
	* g++.dg/ext/visibility/redecl1.C: Adjust.
	* g++.dg/ext/visibility/visibility-7.C: Likewise.

From-SVN: r210646
2014-05-20 15:16:48 +00:00
Richard Sandiford efa72acd62 re PR bootstrap/61210 (bootstrap failure with clang)
gcc/cp/
	PR bootstrap/61210
	* pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
	(tsubst_copy_and_build): Perform recursive substitutions in a
	deterministic order.

From-SVN: r210645
2014-05-20 14:18:44 +00:00
Bill Schmidt ec217bd88a simplify-rtx.c (simplify_binary_operation_1): Optimize case of nested VEC_SELECTs that are inverses of each other.
[gcc]

2014-05-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* simplify-rtx.c (simplify_binary_operation_1): Optimize case of
	nested VEC_SELECTs that are inverses of each other.

[gcc/testsuite]

2014-05-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/vsxcopy.c: New test.

From-SVN: r210644
2014-05-20 14:14:21 +00:00
Richard Biener b2b222b311 tree-ssa-sccvn.c (process_scc): Dump SCC here, when iterating,
2014-05-20  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (process_scc): Dump SCC here, when
	iterating,
	(extract_and_process_scc_for_name): not here.
	(cond_dom_walker::before_dom_children): Only process
	stmts that end the BB in interesting ways.
	(run_scc_vn): Mark param uses as visited.

From-SVN: r210643
2014-05-20 13:54:06 +00:00
Paolo Carlini bdb5a9a30c re PR c++/58664 ([c++11] ICE initializing array of incomplete type within union)
/cp
2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58664
	* typeck2.c (cxx_incomplete_type_inform): New.
	(cxx_incomplete_type_diagnostic): Use it.
	* decl.c (grokdeclarator): Check the element type of an
	incomplete array type; call the above.
	* cp-tree.h (cxx_incomplete_type_inform): Declare.

/testsuite
2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58664
	* g++.dg/cpp0x/nsdmi-union6.C: New.
	* g++.dg/parse/pr58664.C: Likewise.
	* g++.dg/cpp0x/nsdmi6.C: Tweak.
	* g++.dg/parse/crash31.C: Likewise.
	* g++.dg/template/error2.C: Likewise.
	* g++.dg/template/inherit8.C: Likewise.
	* g++.dg/template/offsetof2.C: Likewise.

From-SVN: r210642
2014-05-20 13:30:40 +00:00
Kyrylo Tkachov e9ea518525 [ARM] Adjust arith_shiftsi for -mrestrict-it.
* config/arm/arm.md (arith_shiftsi): Do not predicate for
	arm_restrict_it.

From-SVN: r210640
2014-05-20 13:16:21 +00:00
Richard Sandiford 768b94bc2d dg-extract-results.py (parse_run): Handle warnings that are printed before a test harness is run.
contrib/
	* dg-extract-results.py (parse_run): Handle warnings that are printed
	before a test harness is run.

From-SVN: r210637
2014-05-20 10:08:59 +00:00
Nick Clifton 8f0e7f6f6b msp430.md (zero_extendpsisi2): Use + constraint on operand 0 in order to prevent confusion about the number of...
* config/msp430/msp430.md (zero_extendpsisi2): Use + constraint on
	operand 0 in order to prevent confusion about the number of
	registers involved.

From-SVN: r210636
2014-05-20 09:38:00 +00:00
Sebastian Huber 8ec7c36a53 libffi.exp (load_gcc_lib): Register loaded libs.
2014-05-20  Sebastian Huber  <sebastian.huber@embedded-brains.de>

libffi/
	* testsuite/lib/libffi.exp (load_gcc_lib): Register loaded libs.

libjava/
	* testsuite/lib/libjava.exp (load_gcc_lib): Register loaded libs.

libstdc++-v3/
	* testsuite/lib/libstdc++.exp (load_gcc_lib): Register loaded libs.

From-SVN: r210634
2014-05-20 08:20:06 +00:00
Richard Biener d1c0308e9b re PR tree-optimization/61221 (ICE on valid code at -O1 and above on x86_64-linux-gnu)
2014-05-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61221
	* tree-ssa-pre.c (el_to_update): Remove.
	(eliminate_dom_walker::before_dom_children): Handle released
	VDEFs by value-numbering them to the associated VUSE.  Update
	stmt immediately for substituted call address.
	(eliminate): Remove delayed stmt updating code.
	* tree-ssa-sccvn.c (vuse_ssa_val): New function valueizing
	possibly late re-numbered vuses.
	(vn_reference_lookup_2): Adjust.
	(vn_reference_lookup_pieces): Likewise.
	(vn_reference_lookup): Likewise.

From-SVN: r210633
2014-05-20 08:16:13 +00:00
Richard Biener 54da09ee20 config.gcc: Remove need_64bit_hwint.
2014-05-20  Richard Biener  <rguenther@suse.de>

	gcc/
	* config.gcc: Remove need_64bit_hwint.
	* configure.ac: Do not define NEED_64BIT_HOST_WIDE_INT.
	* hwint.h: Do not check NEED_64BIT_HOST_WIDE_INT but assume
	it to be true.
	* config.in: Regenerate.
	* configure: Likewise.

	libcpp/
	* configure.ac: Copy gcc logic of detecting a 64bit type.
	Remove HOST_WIDE_INT define.
	* include/cpplib.h: typedef cpp_num_part to a 64bit type,
	similar to how hwint.h does it.
	* config.in: Regenerate.
	* configure: Likewise.

From-SVN: r210632
2014-05-20 08:01:32 +00:00
Joern Rennecke 74145685ed * mode-switching.c (optimize_mode_switching): Fix comment typo.
From-SVN: r210631
2014-05-20 08:08:01 +01:00
Tim Shen 4dae67e090 re PR libstdc++/61227 ([C++11] Regex [\w] does not work)
2014-05-20  Tim Shen  <timshen91@gmail.com>

	PR libstdc++/61227
	* include/bits/regex_compiler.h
	(_BracketMatcher<>::_M_add_character_class): Add negative character
	class support.
	* include/bits/regex_compiler.tcc (_BracketMatcher<>::_M_apply):
	Likewise.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc:
	Add more testcases.

From-SVN: r210630
2014-05-20 04:31:54 +00:00
GCC Administrator b9b7e07c27 Daily bump.
From-SVN: r210629
2014-05-20 00:16:45 +00:00
Jonathan Wakely 470592286a * python/libstdcxx/v6/printers.py: Use Python3 raise syntax.
From-SVN: r210625
2014-05-19 22:43:13 +01:00
Jason Merrill 0f5b01358d re PR c++/58761 (ICE with a lambda capturing this in a NSDMI)
PR c++/58761
	* pt.c (tsubst_copy): Don't check at_function_scope_p.
	(instantiate_class_template_1): Don't push_to_top_level in an nsdmi.

From-SVN: r210624
2014-05-19 14:41:24 -04:00
Paolo Carlini 7fb80849cb typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
/cp
2014-05-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
	* parser.c (cp_parser_enum_specifier): Likewise.

/testsuite
2014-05-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* c-c++-common/gomp/simd4.c: Adjust for inform.
	* g++.dg/cpp0x/decltype-call1.C: Likewise.
	* g++.dg/cpp0x/forw_enum6.C: Likewise.
	* g++.dg/cpp0x/lambda/lambda-ice7.C: Likewise.
	* g++.dg/cpp0x/noexcept15.C: Likewise.
	* g++.dg/cpp0x/variadic-ex2.C: Likewise.
	* g++.dg/eh/spec6.C: Likewise.
	* g++.dg/expr/cast1.C: Likewise.
	* g++.dg/expr/dtor1.C: Likewise.
	* g++.dg/ext/is_base_of_diagnostic.C: Likewise.
	* g++.dg/ext/unary_trait_incomplete.C: Likewise.
	* g++.dg/gomp/pr49223-2.C: Likewise.
	* g++.dg/gomp/udr-4.C: Likewise.
	* g++.dg/init/delete1.C: Likewise.
	* g++.dg/other/crash-2.C: Likewise.
	* g++.dg/parse/crash24.C: Likewise.
	* g++.dg/parse/crash25.C: Likewise.
	* g++.dg/parse/crash31.C: Likewise.
	* g++.dg/parse/crash49.C: Likewise.
	* g++.dg/parse/crash50.C: Likewise.
	* g++.dg/parse/crash54.C: Likewise.
	* g++.dg/parse/dtor7.C: Likewise.
	* g++.dg/parse/error40.C: Likewise.
	* g++.dg/parse/fused-params1.C: Likewise.
	* g++.dg/parse/new1.C: Likewise.
	* g++.dg/template/crash35.C: Likewise.
	* g++.dg/template/crash59.C: Likewise.
	* g++.dg/template/crash77.C: Likewise.
	* g++.dg/template/error51.C: Likewise.
	* g++.dg/template/incomplete1.C: Likewise.
	* g++.dg/template/incomplete3.C: Likewise.
	* g++.dg/template/incomplete4.C: Likewise.
	* g++.dg/template/incomplete5.C: Likewise.
	* g++.dg/template/inherit8.C: Likewise.
	* g++.dg/template/instantiate1.C: Likewise.
	* g++.dg/template/instantiate3.C: Likewis: Likewise.
	* g++.dg/template/offsetof2.C: Likewise.
	* g++.dg/tm/pr51928.C: Likewise.
	* g++.dg/warn/Wdelete-incomplete-1.C: Likewise.
	* g++.dg/warn/incomplete1.C: Likewise.
	* g++.dg/warn/incomplete2.C: Likewise.
	* g++.old-deja/g++.brendan/friend4.C: Likewise.
	* g++.old-deja/g++.bugs/900121_01.C: Likewise.
	* g++.old-deja/g++.bugs/900214_01.C: Likewise.
	* g++.old-deja/g++.eh/catch1.C: Likewise.
	* g++.old-deja/g++.eh/spec6.C: Likewise.
	* g++.old-deja/g++.mike/p7868.C: Likewise.
	* g++.old-deja/g++.other/crash38.C: Likewise.
	* g++.old-deja/g++.other/enum2.C: Likewise.
	* g++.old-deja/g++.other/incomplete.C: Likewise.
	* g++.old-deja/g++.other/vaarg3.C: Likewise.
	* g++.old-deja/g++.pt/crash9.C: Likewise.
	* g++.old-deja/g++.pt/niklas01a.C: Likewise.
	* g++.old-deja/g++.pt/typename8.C: Likewise.
	* g++.old-deja/g++.robertl/ice990323-1.C: Likewise.

From-SVN: r210623
2014-05-19 17:51:31 +00:00
David Wohlferd 883755a164 extend.texi: Create Label Attributes section, move all label attributes into it and reference it.
2014-05-19  David Wohlferd <dw@LimeGreenSocks.com>

        * doc/extend.texi: Create Label Attributes section,
        move all label attributes into it and reference it.

From-SVN: r210621
2014-05-19 11:40:40 -06:00
Mike Stump 905083ad75 + * MAINTAINERS: Add wide-int reviewers.
From-SVN: r210620
2014-05-19 17:12:53 +00:00
Richard Earnshaw 514b315679 arm.c (thumb1_reorg): When scanning backwards skip anything that's not a proper insn.
* arm.c (thumb1_reorg): When scanning backwards skip anything
	that's not a proper insn.

From-SVN: r210618
2014-05-19 16:09:49 +00:00
Joseph Myers 68038e6a2d * lib/target-supports.exp
(check_effective_target_vect_sizes_32B_16B): Return false if
	128-bit AVX vectors preferred.

From-SVN: r210617
2014-05-19 16:50:40 +01:00
Mike Stump 128ded1e86 target-supports.exp (check_effective_target_avx): Early out if not x86 to prevent x86 flags on non-x86 targets.
* lib/target-supports.exp (check_effective_target_avx): Early out
	if not x86 to prevent x86 flags on non-x86 targets.

From-SVN: r210616
2014-05-19 15:32:22 +00:00
Richard Henderson b17f08ddf9 libitm: Enable aarch64
From-SVN: r210615
2014-05-19 07:41:18 -07:00
Richard Biener 1d44def2c2 re PR tree-optimization/61221 (ICE on valid code at -O1 and above on x86_64-linux-gnu)
2014-05-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61221
	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
	Do nothing for unreachable blocks.
	* tree-ssa-sccvn.c (cond_dom_walker::before_dom_children):
	Improve unreachability detection.

	* gcc.dg/torture/pr61221.c: New testcase.

From-SVN: r210614
2014-05-19 14:33:31 +00:00
Richard Biener 051351362b re PR middle-end/61209 (internal compiler error: in fold_convert_loc, at fold-const.c:1950)
2014-05-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61209
	* tree-ssa-sccvn.c (visit_phi): Avoid setting expr to VN_TOP.

	* gfortran.dg/pr61209.f90: New testcase.

From-SVN: r210613
2014-05-19 14:32:23 +00:00
Nick Clifton 40ba8dfb39 except.c (init_eh): Fix computation of builtin setjmp buffer size to allow for targets where...
* except.c (init_eh): Fix computation of builtin setjmp buffer
	size to allow for targets where POINTER_SIZE > BITS_PER_WORD.

From-SVN: r210612
2014-05-19 13:27:25 +00:00
Richard Biener cb460086e1 re PR tree-optimization/61184 (wrong code (that hangs) by LTO on x86_64-linux-gnu)
2014-05-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61184
	* tree-vrp.c (is_negative_overflow_infinity): Use
	TREE_OVERFLOW_P and do that check first.
	(is_positive_overflow_infinity): Likewise.
	(is_overflow_infinity): Likewise.
	(vrp_operand_equal_p): Properly treat operands with
	differing overflow as not equal.

	* c-c++-common/torture/pr61184.c: New testcase.

From-SVN: r210611
2014-05-19 12:32:15 +00:00
Bernd Schmidt bddd36713d Fix an error in a CONST_INT_P patch from 2009.
* simplify-rtx.c (simplify_unary_operation_1): Use CONST_INT_P in
	shift simplification where it was intended.

From-SVN: r210610
2014-05-19 11:38:14 +00:00
Christian Bruel 72d82e7ab1 re PR target/61195 (single precision fmov does not need to switch mode)
PR target/61195
* config/sh/sh.md (movsf_ie): Unset fp_mode for fmov

From-SVN: r210608
2014-05-19 10:04:22 +02:00
Richard Sandiford 34dbb287c7 re PR bootstrap/61084 (wide-int merge broke Solaris/SPARC bootstrap)
gcc/
	PR target/61084
	* config/sparc/sparc.c (sparc_fold_builtin): Use widest_int rather
	than wide_int.

From-SVN: r210604
2014-05-19 07:25:25 +00:00
Richard Sandiford 339ba33b4f reg-notes.def (CROSSING_JUMP): Likewise.
gcc/
	* reg-notes.def (CROSSING_JUMP): Likewise.
	* rtl.h (rtx_def): Update comment for jump flag.
	(CROSSING_JUMP_P): Define.
	* cfgcleanup.c (try_forward_edges, try_optimize_cfg): Use it instead
	of a REG_CROSSING_JUMP note.
	* cfghooks.c (tidy_fallthru_edges): Likewise.
	* cfgrtl.c (fixup_partition_crossing, rtl_verify_edges): Likewise.
	* emit-rtl.c (try_split): Likewise.
	* haifa-sched.c (sched_create_recovery_edges): Likewise.
	* ifcvt.c (find_if_case_1, find_if_case_2): Likewise.
	* jump.c (redirect_jump_2): Likewise.
	* reorg.c (follow_jumps, fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.
	* config/arc/arc.md (jump_i, cbranchsi4_scratch, *bbit): Likewise.
	(bbit_di): Likewise.
	* config/arc/arc.c (arc_reorg, arc_can_follow_jump): Likewise.
	* config/sh/sh.md (jump_compact): Likewise.
	* bb-reorder.c (rotate_loop): Likewise.
	(pass_duplicate_computed_gotos::execute): Likewise.
	(add_reg_crossing_jump_notes): Rename to...
	(update_crossing_jump_flags): ...this.
	(pass_partition_blocks::execute): Update accordingly.

From-SVN: r210603
2014-05-19 06:49:58 +00:00
Richard Sandiford a65d5b87d1 tree.h: Remove extraneous template <>.
gcc/
	* tree.h: Remove extraneous template <>.

From-SVN: r210602
2014-05-19 06:47:03 +00:00
Wei Mi eba7629307 re PR target/58066 (__tls_get_addr is called with misaligned stack on x86-64)
2014-05-18  Wei Mi  <wmi@google.com>

        PR target/58066
        * gcc.target/i386/pr58066.c: Replace pattern matching of .cfi
        directive with rtl insns. Add effective-target of fpic and
        tls_native.

From-SVN: r210601
2014-05-19 05:25:45 +00:00
Xinliang David Li 2695eb1851 Add new test case
From-SVN: r210599
2014-05-19 01:41:16 +00:00
Jan Hubicka 7b3376a0da ipa.c (symtab_remove_unreachable_nodes): Remove symbol from comdat group if its body was eliminated.
* ipa.c (symtab_remove_unreachable_nodes): Remove
	symbol from comdat group if its body was eliminated.
	(comdat_can_be_unshared_p_1): Static symbols can always
	be privatized.
	* symtab.c (symtab_remove_from_same_comdat_group): Break out
	from ...
	(symtab_unregister_node): ... this one.
	(verify_symtab_base): More strict checking of comdats.
	* cgraph.h (symtab_remove_from_same_comdat_group): Declare.

From-SVN: r210598
2014-05-19 01:01:12 +00:00
Jan Hubicka a04d9035ec tree-pass.h (make_pass_ipa_comdats): New pass.
* tree-pass.h (make_pass_ipa_comdats): New pass.
	* timevar.def (TV_IPA_COMDATS): New timevar.
	* passes.def (pass_ipa_comdats): Add.
	* Makefile.in (OBJS): Add ipa-comdats.o
	* ipa-comdats.c: New file.

	* g++.dg/ipa/comdat.C: New file.

From-SVN: r210597
2014-05-19 00:58:43 +00:00
GCC Administrator 449cdb37f0 Daily bump.
From-SVN: r210596
2014-05-19 00:18:24 +00:00
Jan Hubicka 24a71ba8cc ipa.c (update_visibility_by_resolution_info): New function.
* ipa.c (update_visibility_by_resolution_info): New function.
	(function_and_variable_visibility): Use it.

From-SVN: r210592
2014-05-18 21:16:08 +00:00
Eric Botcazou 40e63ada2b trans.c (Subprogram_Body_to_gnu): Rework comment and set function_start_locus.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Rework comment and
	set function_start_locus.

From-SVN: r210591
2014-05-18 21:12:42 +00:00
Eric Botcazou dd25fe0a4b utils.c (gnat_write_global_declarations): Adjust the flags put on dummy_global.
* utils.c (gnat_write_global_declarations): Adjust the flags put on
	dummy_global.

From-SVN: r210589
2014-05-18 21:08:14 +00:00
Eric Botcazou 4aecc2f8e4 decl.c (change_qualified_type): New static function.
* gcc-interface/decl.c (change_qualified_type): New static function.
	(gnat_to_gnu_entity): Use it throughout to add qualifiers on types.
	<E_Array_Type>: Set TYPE_VOLATILE on the array type directly.
	<E_Array_Subtype>: Likewise.
	Do not set flags on an UNCONSTRAINED_ARRAY_TYPE directly.
	(gnat_to_gnu_component_type): Likewise.
	(gnat_to_gnu_param): Likewise.

From-SVN: r210588
2014-05-18 21:02:59 +00:00
Eric Botcazou 08b8b90cff fe.h (Set_Present_Expr): Move around.
* fe.h (Set_Present_Expr): Move around.
	(End_Location): New macro.
	* gcc-interface/trans.c (Case_Statement_to_gnu): Use End_Location.

From-SVN: r210587
2014-05-18 20:52:45 +00:00
Jan Hubicka d6d229c6b4 cgraph.h (symtab_first_defined_symbol, [...]): New functions.
* cgraph.h (symtab_first_defined_symbol, symtab_next_defined_symbol):
	New functions.
	(FOR_EACH_DEFINED_SYMBOL): New macro.
	(varpool_first_static_initializer, varpool_next_static_initializer,
	varpool_first_defined_variable, varpool_next_defined_variable): Fix comments.
	(symtab_in_same_comdat_p): Correctly deal with inline functions.

From-SVN: r210586
2014-05-18 19:11:58 +00:00
Eric Botcazou 43a4dd826c decl.c (gnat_to_gnu_entity): Use Underlying_Type in lieu of more verbose construct.
* gcc-interface/decl.c (gnat_to_gnu_entity): Use Underlying_Type in
	lieu of more verbose construct.
	* gcc-interface/trans.c (Call_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.  Remove obsolete code.

From-SVN: r210585
2014-05-18 17:59:58 +00:00
Eric Botcazou f9d7d7c14c decl.c (gnat_to_gnu_entity): Do not consider that regular packed arrays can never be superflat.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Do not
	consider that regular packed arrays can never be superflat.

From-SVN: r210583
2014-05-18 17:51:15 +00:00
Uros Bizjak 7283246061 libgomp.texi (Runitme Library Routines): Remove multiple @menu.
* libgomp.texi (Runitme Library Routines): Remove multiple @menu.
	(Environment Variables) Move OMP_PROC_BIND and OMP_STACKSIZE node
	texts according to their @menu entry positions.

From-SVN: r210580
2014-05-18 12:29:30 +02:00
Andreas Schwab a9dd011283 * gcc.target/ia64/visibility-1.c (variable_l): Add used attribute.
From-SVN: r210579
2014-05-18 07:25:33 +00:00
Uros Bizjak 16f8dfdb79 ChangeLog: Fix.
* ChangeLog: Fix.
	* testsuite/ChangeLog: Ditto.

From-SVN: r210578
2014-05-18 09:24:24 +02:00