Kirill Yukhin
66b5e890ec
gcc/testsuite
...
* Add forgotten file.
From-SVN: r213702
2014-08-07 09:59:34 +00:00
Kyrylo Tkachov
60c2020d0d
Remove arm-specific -march in test.
...
* gcc.dg/pr61756.c: Remove arm-specific dg-options.
From-SVN: r213701
2014-08-07 08:31:07 +00:00
Marek Polacek
044331a86c
fold-const.c (fold_binary_loc): Add folding of (PTR0 - (PTR1 p+ A) -> (PTR0 - PTR1) - A.
...
* fold-const.c (fold_binary_loc): Add folding of
(PTR0 - (PTR1 p+ A) -> (PTR0 - PTR1) - A.
c/
* c-typeck.c (pointer_diff): Remove P - (P + CST) optimization.
testsuite/
* gcc.dg/fold-reassoc-3.c: New test.
From-SVN: r213700
2014-08-07 08:12:04 +00:00
Ilya Enkovich
ce597aedd7
elfos.h (ASM_DECLARE_OBJECT_NAME): Use decl size instead of type size.
...
gcc/
* config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use decl size
instead of type size.
(ASM_FINISH_DECLARE_OBJECT): Likewise.
gcc/testsuite/
* gcc.target/i386/struct-size.c: New.
From-SVN: r213699
2014-08-07 08:04:55 +00:00
Tom de Vries
ddccb16a72
Remove duplicate ChangeLog entries
...
From-SVN: r213697
2014-08-07 07:41:33 +00:00
Marat Zakirov
0a2938aee4
thumb1.md (*thumb1_movhi_insn): Handle stack pointer.
...
2014-08-07 Marat Zakirov <m.zakirov@samsung.com>
* config/arm/thumb1.md (*thumb1_movhi_insn): Handle stack pointer.
(*thumb1_movqi_insn): Likewise.
* config/arm/thumb2.md (*thumb2_movhi_insn): Likewise.
From-SVN: r213695
2014-08-07 07:34:33 +00:00
Tom de Vries
87db77bb25
Remove cproj-fails-with-broken-glibc.c
...
2014-08-07 Tom de Vries <tom@codesourcery.com>
* gcc.dg/cproj-fails-with-broken-glibc.c: Remove test.
* lib/target-supports.exp (check_effective_target_glibc)
(check_effective_target_glibc_2_12_or_later)
(check_effective_target_glibc_2_11_or_earlier): Remove proc.
* doc/sourcebuild.texi (glibc, glibc_2_12_or_later)
(glibc_2_11_or_earlier): Remove effective-target keywords.
From-SVN: r213694
2014-08-07 07:22:35 +00:00
Tom de Vries
b85e2cb05e
For cproj test-case, use glibc version xfail
...
2014-08-04 Tom de Vries <tom@codesourcery.com>
* gcc.dg/cproj-fails-with-broken-glibc.c: Use xfail for broken glibc
version instead of required-target.
* lib/target-supports.exp
(check_effective_target_not_glibc_2_11_or_earlier): Replace by ...
(check_effective_target_glibc_2_11_or_earlier): ... this.
* doc/sourcebuild.texi (glibc, glibc_2_12_or_later)
(glibc_2_11_or_earlier): Document effective-target keywords.
From-SVN: r213693
2014-08-07 07:22:24 +00:00
Kugan Vivekanandarajah
8a17543b56
arm.c (bdesc_2arg): Fix typo.
...
gcc/
2014-08-07 Kugan Vivekanandarajah <kuganv@linaro.org>
* config/arm/arm.c (bdesc_2arg): Fix typo.
(arm_atomic_assign_expand_fenv): Remove The default implementation.
From-SVN: r213692
2014-08-07 06:22:05 +00:00
Zhenqiang Chen
b88fe5e918
tree-ssa-loop-ivopts.c (get_address_cost): Try aligned offset.
...
ChangeLog
2014-08-07 Zhenqiang Chen <zhenqiang.chen@arm.com>
* tree-ssa-loop-ivopts.c (get_address_cost): Try aligned offset.
testsuite/ChangeLog
2014-08-07 Zhenqiang Chen <zhenqiang.chen@arm.com>
* gcc.target/arm/get_address_cost_aligned_max_offset.c: New test.
From-SVN: r213691
2014-08-07 04:54:06 +00:00
Jason Merrill
c0014b079f
init.c (build_vec_init): Fix constant initialization of trailing elements.
...
* init.c (build_vec_init): Fix constant initialization of
trailing elements.
(build_value_init_noctor): Call maybe_constant_init.
* semantics.c (maybe_constant_init): See through EXPR_STMT and
conversion to void.
From-SVN: r213690
2014-08-06 21:44:40 -04:00
Jason Merrill
ced2fb085c
re PR c++/60417 ([DR 1518] Bogus error on C++03 aggregate initialization)
...
PR c++/60417
* init.c (build_vec_init): Reorganize earlier change a bit.
From-SVN: r213689
2014-08-06 21:44:11 -04:00
Jason Merrill
5fb4d142f0
re PR c++/61994 (constexpr vector array ICE)
...
PR c++/61994
* init.c (build_vec_init): Leave atype an ARRAY_TYPE
if we're just returning an INIT_EXPR.
From-SVN: r213688
2014-08-06 21:44:06 -04:00
Jason Merrill
d06a312a4f
pt.c (check_explicit_specialization): Don't test DECL_DECLARED_INLINE_P for a variable template.
...
* pt.c (check_explicit_specialization): Don't test
DECL_DECLARED_INLINE_P for a variable template.
Co-Authored-By: Braden Obrzut <admin@maniacsvault.net>
From-SVN: r213687
2014-08-06 21:43:58 -04:00
GCC Administrator
3b024f233d
Daily bump.
...
From-SVN: r213686
2014-08-07 00:16:29 +00:00
Paolo Carlini
81caef48c8
re PR c++/43906 (missing warnings the comparison between an address with a null pointer constant)
...
/cp
2014-08-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43906
* typeck.c (cp_build_binary_op): Extend to more cases the
-Waddress warning.
/testsuite
2014-08-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43906
* g++.dg/warn/Waddress-1.C: New.
From-SVN: r213682
2014-08-06 19:09:08 +00:00
Maciej W. Rozycki
c5ff29dae8
* gcc.dg/pr44194-1.c: Remove an extraneous brace.
...
From-SVN: r213677
2014-08-06 16:11:21 +00:00
Vladimir Makarov
f50d71ec0f
re PR debug/61923 (-fcompare-debug errors while building Linux kernel.)
...
2014-08-06 Vladimir Makarov <vmakarov@redhat.com>
PR debug/61923
* haifa-sched.c (advance_one_cycle): Fix dump.
(schedule_block): Don't advance cycle if we are already at the
beginning of the cycle.
2014-08-06 Vladimir Makarov <vmakarov@redhat.com>
PR debug/61923
* gcc.target/i386/pr61923.c: New test.
From-SVN: r213675
2014-08-06 15:40:26 +00:00
Martin Jambor
9d6171dce1
re PR ipa/61393 ([trans-mem] O3 optimization level constant propagation problem)
...
2014-08-06 Martin Jambor <mjambor@suse.cz>
PR ipa/61393
* cgraphclones.c (cgraph_node::create_clone): Also copy tm_clone.
From-SVN: r213666
2014-08-06 15:59:18 +02:00
Richard Biener
b12c44e901
re PR lto/62034 (ICE for big statically initialized arrays compiled with LTO)
...
2014-08-06 Richard Biener <rguenther@suse.de>
PR lto/62034
* lto-streamer-in.c (lto_input_tree_1): Assert we do not read
SCCs here.
(lto_input_tree): Pop SCCs here.
From-SVN: r213664
2014-08-06 13:53:09 +00:00
Richard Biener
abf3045448
re PR bootstrap/61320 (ICE in jcf-parse.c:1622 (parse_class_file)
...
2014-08-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/61320
* tree-ssa-loop-ivopts.c (may_be_unaligned_p): Properly
handle misaligned loads.
From-SVN: r213661
2014-08-06 11:41:13 +00:00
Alan Lawrence
f901401e53
[PATCH AArch64] Prefer dup to zip for vec_perm_const; enable dup for bigendian; add testcase.
...
gcc/:
* config/aarch64/aarch64.c (aarch64_evpc_dup): Enable for bigendian.
(aarch64_expand_vec_perm_const): Check for dup before zip.
gcc/testsuite:
* gcc.target/aarch64/vdup_n_2.c: New test.
From-SVN: r213659
2014-08-06 10:17:05 +00:00
Maciej W. Rozycki
06e105fc9b
pr44194-1.c: Also exclude powerpc*-*-linux*, except if powerpc_elfv2.
...
* gcc.dg/pr44194-1.c: Also exclude powerpc*-*-linux*, except if
powerpc_elfv2.
From-SVN: r213657
2014-08-06 10:02:37 +00:00
Jakub Jelinek
67fb7be7b8
re PR rtl-optimization/61801 (sched2 miscompiles syscall sequence with -g)
...
PR rtl-optimization/61801
* gcc.target/i386/pr61801.c: Rewritten.
From-SVN: r213652
2014-08-06 10:40:19 +02:00
Kyrylo Tkachov
4aa81c2e6a
[AArch64] Use REG_P and CONST_INT_P instead of GET_CODE + comparison.
...
* config/aarch64/aarch64.c (aarch64_classify_address): Use REG_P and
CONST_INT_P instead of GET_CODE and compare.
(aarch64_select_cc_mode): Likewise.
(aarch64_print_operand): Likewise.
(aarch64_rtx_costs): Likewise.
(aarch64_simd_valid_immediate): Likewise.
(aarch64_simd_check_vect_par_cnst_half): Likewise.
(aarch64_simd_emit_pair_result_insn): Likewise.
From-SVN: r213651
2014-08-06 08:32:07 +00:00
GCC Administrator
0483b3636d
Daily bump.
...
From-SVN: r213649
2014-08-06 00:16:32 +00:00
David Malcolm
17ef89b220
gdbhooks.py: add "break-on-pass" command
...
gcc/
2014-08-05 David Malcolm <dmalcolm@redhat.com>
* gdbhooks.py (find_gcc_source_dir): New helper function.
(class PassNames): New class, locating and parsing passes.def.
(class BreakOnPass): New command "break-on-pass".
From-SVN: r213646
2014-08-05 21:01:47 +00:00
Trevor Saunders
6ef6945c9c
fix pr62009 use after free in redirect_edge_var_map_dup
...
The change to get the entry for the old edge before inserting the new
one was incorrect because if inserting the new one resized the table
then the pointer to the entry for the old one would become invalid.
gcc/
* tree-ssa.c (redirect_edge_var_map_dup): insert newe before
getting olde.
From-SVN: r213644
2014-08-05 19:52:08 +00:00
Eric Botcazou
fa12e57e0c
Fix more typos.
...
From-SVN: r213643
2014-08-05 18:35:50 +00:00
Eric Botcazou
7bd4381cd0
Fix typos.
...
From-SVN: r213642
2014-08-05 18:29:21 +00:00
Braden Obrzut
4a4f287dc1
Implement constexpr variable templates
...
Implement constexpr variable templates
* decl.c (grokvardecl): Handle specializations of variable templates.
(grokdeclarator): Handle variable template id expressions and NULL_TREE
return from grokvardecl.
* decl2.c (check_member_template): Allow declaration of template member
variables.
* parser.c (cp_parser_template_id): Build a TEMPLATE_ID_EXPR for
variable templates.
* pt.c (check_template_variable): Accept variable temploids at
non-class scope.
(push_template_decl_real): The current instantiation of a template
can be a VAR_DECL.
(determine_specialization): Accept variable templates.
(check_explicit_specialization): Handle and check for malformed
variable template specializations.
(lookup_template_variable): New.
(tsubst_decl): Handle variable template specializations.
(do_decl_instantiation): Handle template variables.
(instantiate_decl): Handle template variables.
* semantics.c (finish_template_variable): New.
(finish_id_expression): Instantiate variable templates.
* cp-tree.h (variable_template_p): New.
From-SVN: r213641
2014-08-05 14:24:06 -04:00
Edmar Wienskoski
d406ae470c
Fixed text formatting
...
From-SVN: r213640
2014-08-05 14:44:36 +00:00
Richard Biener
96b3c03f4e
re PR rtl-optimization/61672 (Less redundant instructions deleted by pre_delete after r208113.)
...
2014-08-05 Richard Biener <rguenther@suse.de>
PR rtl-optimization/61672
* emit-rtl.h (mem_attrs_eq_p): Declare.
* emit-rtl.c (mem_attrs_eq_p): Export. Handle NULL mem-attrs.
* cse.c (exp_equiv_p): Use mem_attrs_eq_p.
* cfgcleanup.c (merge_memattrs): Likewise.
Include emit-rtl.h.
From-SVN: r213638
2014-08-05 13:05:06 +00:00
Kyrylo Tkachov
b8a5fbd280
[AArch64] Fix types for vqdmlals_lane_s32 and vqdmlsls_lane_s32 intrinsics.
...
* config/aarch64/arm_neon.h (vqdmlals_lane_s32): Use scalar types
rather than singleton vectors.
(vqdmlsls_lane_s32): Likewise.
* gcc.target/aarch64/scalar_intrinsics.c (test_vqdmlals_lane_s32):
Fix types.
(test_vqdmlsls_lane_s32): Likewise.
* gcc.target/aarch64/simd/vqdmlals_lane_s32.c: Likewise.
* gcc.target/aarch64/simd/vqdmlsls_lane_s32.c: Likewise.
From-SVN: r213636
2014-08-05 10:46:31 +00:00
Kyrylo Tkachov
d2937a2e3f
[AArch64] Implement some saturating math NEON intrinsics.
...
* config/aarch64/aarch64-simd.md (aarch64_sqdmulh_laneq<mode>):
Use VSDQ_HSI mode iterator.
(aarch64_sqrdmulh_laneq<mode>): Likewise.
(aarch64_sq<r>dmulh_laneq<mode>_internal): New define_insn.
* config/aarch64/aarch64-simd-builtins.def (sqdmulh_laneq):
Use BUILTIN_VDQHS macro.
(sqrdmulh_laneq): Likewise.
* config/aarch64/arm_neon.h (vqdmlalh_laneq_s16): New intrinsic.
(vqdmlals_laneq_s32): Likewise.
(vqdmlslh_laneq_s16): Likewise.
(vqdmlsls_laneq_s32): Likewise.
(vqdmulhh_laneq_s16): Likewise.
(vqdmulhs_laneq_s32): Likewise.
(vqrdmulhh_laneq_s16): Likewise.
(vqrdmulhs_laneq_s32): Likewise.
* gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c: New test.
* gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c: Likewise.
From-SVN: r213635
2014-08-05 10:43:41 +00:00
Kyrylo Tkachov
ada5287e55
[AArch64] Implement some vmul*_lane*_f* intrinsics in arm_neon.h.
...
* config/aarch64/arm_neon.h (vmul_f64): New intrinsic.
(vmuld_laneq_f64): Likewise.
(vmuls_laneq_f32): Likewise.
(vmul_n_f64): Likewise.
(vmuld_lane_f64): Reimplement in C.
(vmuls_lane_f32): Likewise.
* gcc.target/aarch64/simd/vmul_f64_1.c: New test.
* gcc.target/aarch64/simd/vmul_n_f64_1.c: Likewise.
* gcc.target/aarch64/simd/vmuld_lane_f64_1.c: Likewise.
* gcc.target/aarch64/simd/vmuld_laneq_f64_1.c: Likewise.
* gcc.target/aarch64/simd/vmuls_lane_f32_1.c: Likewise.
* gcc.target/aarch64/simd/vmuls_laneq_f32_1.c: Likewise.
From-SVN: r213634
2014-08-05 10:39:31 +00:00
Kyrylo Tkachov
ad784b91ac
[ARM/AArch64] Add CRC32 scheduling information to Cortex-A53 and Cortex-A57.
...
* config/arm/cortex-a15.md (cortex_a15_alu_shift): Add crc type
to reservation.
* config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise.
From-SVN: r213632
2014-08-05 10:27:07 +00:00
Kyrylo Tkachov
66224c7d68
[ARM] Adjust clz, rbit and rev patterns for -mrestrict-it.
...
* config/arm/arm.md (clzsi2): Set predicable_short_it attr to no.
(rbitsi2): Likewise.
(*arm_rev): Set predicable and predicable_short_it attributes.
From-SVN: r213630
2014-08-05 09:56:31 +00:00
Kyrylo Tkachov
0021b8a5ab
Correct usage of dg-require-fork in gcc.dg/torture/ftrapv-1.c
...
* gcc.dg/torture/ftrapv-1.c: Correct usage of dg-require-fork.
From-SVN: r213629
2014-08-05 09:54:14 +00:00
Kyrylo Tkachov
371e764dd9
[convert.c] PR 61876: Guard transformation to lrint by -fno-math-errno.
...
* convert.c (convert_to_integer): Guard transformation to lrint by
-fno-math-errno.
From-SVN: r213628
2014-08-05 09:52:21 +00:00
James Greenhalgh
bc5e395d60
[AArch64] Some aarch64-builtins.c cleanup.
...
gcc/
* config/aarch64/aarch64-builtins.c
(aarch64_simd_builtin_type_mode): Delete.
(v8qi_UP): Remap to V8QImode.
(v4hi_UP): Remap to V4HImode.
(v2si_UP): Remap to V2SImode.
(v2sf_UP): Remap to V2SFmode.
(v1df_UP): Remap to V1DFmode.
(di_UP): Remap to DImode.
(df_UP): Remap to DFmode.
(v16qi_UP):V16QImode.
(v8hi_UP): Remap to V8HImode.
(v4si_UP): Remap to V4SImode.
(v4sf_UP): Remap to V4SFmode.
(v2di_UP): Remap to V2DImode.
(v2df_UP): Remap to V2DFmode.
(ti_UP): Remap to TImode.
(ei_UP): Remap to EImode.
(oi_UP): Remap to OImode.
(ci_UP): Map to CImode.
(xi_UP): Remap to XImode.
(si_UP): Remap to SImode.
(sf_UP): Remap to SFmode.
(hi_UP): Remap to HImode.
(qi_UP): Remap to QImode.
(aarch64_simd_builtin_datum): Make mode a machine_mode.
(VAR1): Build builtin name.
(aarch64_init_simd_builtins): Remove dead code.
From-SVN: r213627
2014-08-05 09:49:05 +00:00
Roman Gareev
6a12a0041b
[gcc/]
...
* graphite-isl-ast-to-gimple.c:
(set_options): New function.
(scop_to_isl_ast): Add calling of set_options.
From-SVN: r213623
2014-08-05 08:42:09 +00:00
Jakub Jelinek
8cab83f05f
loop-unroll.c (struct iv_to_split): Remove n_loc and loc fields.
...
* loop-unroll.c (struct iv_to_split): Remove n_loc and loc fields.
(analyze_iv_to_split_insn): Don't initialize them.
(get_ivts_expr): Removed.
(allocate_basic_variable, insert_base_initialization): Use
SET_SRC instead of *get_ivts_expr.
(split_iv): Use &SET_SRC instead of get_ivts_expr.
From-SVN: r213621
2014-08-05 10:09:00 +02:00
Roman Gareev
574921c272
graphite-isl-ast-to-gimple.c: Add a new struct ast_build_info.
...
[gcc/]
* graphite-isl-ast-to-gimple.c: Add a new struct ast_build_info.
(translate_isl_ast_for_loop): Add checking of the
flag_loop_parallelize_all.
(ast_build_before_for): New function.
(scop_to_isl_ast): Add checking of the
flag_loop_parallelize_all.
* graphite-dependences.c: Move the defenition of the
scop_get_dependences from graphite-optimize-isl.c to this file.
(apply_schedule_on_deps): Add checking of the ux's emptiness.
(carries_deps): Add checking of the x's value.
* graphite-optimize-isl.c: Move the defenition of the
scop_get_dependences to graphite-dependences.c.
* graphite-poly.h: Add declarations of scop_get_dependences
and carries_deps.
From-SVN: r213619
2014-08-05 03:41:29 +00:00
Ian Lance Taylor
b5975cebfb
re PR go/61308 (gccgo: ICE in Expression::check_bounds [GoSmith])
...
PR go/61308
compiler: Handle enclosing vars for function type in function lit.
This fixes a dumb bug in which the enclosing vars were
incorrectly cleared when a function literal contains a
reference to a function type. The test for this will go into
the master repository in the change at
http://codereview.appspot.com/121200043 .
From-SVN: r213618
2014-08-05 03:11:17 +00:00
Ian Lance Taylor
6e4f9a957e
re PR go/61308 (gccgo: ICE in Expression::check_bounds [GoSmith])
...
PR go/61308
PR go/61866
compiler: Don't cast index expr to int before bounds check.
This fixes http://gcc.gnu.org/PR61866 : on a 32-bit system,
casting an int64 index to int drops the upper 32 bits of the
value, and thus can cause an out-of-range index to appear to
be in range.
This undoes part of change 1318:fa6e0c716dba
(https://codereview.appspot.com/104610044 ) and therefore
breaks http://gcc.gnu.org/PR61308 again. I have a separate
patch for that (http://codereview.appspot.com/122020043 ). In
addition to undoing part of that change, this patch adds code
to avoid a compiler crash. This changes PR61308 from a
compiler crash to an incorrect error message.
From-SVN: r213616
2014-08-05 02:58:15 +00:00
GCC Administrator
cb7b4e7717
Daily bump.
...
From-SVN: r213615
2014-08-05 00:16:51 +00:00
Ian Lance Taylor
d79fe5971a
runtime: Add casts to mincore call to compile on Solaris.
...
Based on patch from Rainer Orth.
From-SVN: r213599
2014-08-04 17:54:09 +00:00
Rohit Arul Raj
c1b361560f
re PR middle-end/60102 (powerpc fp-bit ices at dwf_regno)
...
[gcc/testsuite]
2014-08-04 Rohit <rohitarulraj@freescale.com>
PR target/60102
* gcc.target/powerpc/pr60102.c: New testcase.
From-SVN: r213598
2014-08-04 16:55:07 +00:00
Rohit Arul Raj
23742a9e1b
re PR middle-end/60102 (powerpc fp-bit ices at dwf_regno)
...
PR target/60102
[libgcc]
2014-07-31 Rohit <rohitarulraj@freescale.com>
* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Update
based on change in SPE high register numbers and 3 HTM registers.
[gcc]
2014-07-31 Rohit <rohitarulraj@freescale.com>
* config/rs6000/rs6000.c
(rs6000_reg_names) : Add SPE high register names.
(alt_reg_names) : Likewise.
(rs6000_dwarf_register_span) : For SPE high registers, replace
dwarf register numbers with GCC hard register numbers.
(rs6000_init_dwarf_reg_sizes_extra) : Likewise.
(rs6000_dbx_register_number): For SPE high registers, return dwarf
register number for the corresponding GCC hard register number.
* config/rs6000/rs6000.h
(FIRST_PSEUDO_REGISTER) : Update based on 32 newly added GCC hard
register numbers for SPE high registers.
(DWARF_FRAME_REGISTERS) : Likewise.
(DWARF_REG_TO_UNWIND_COLUMN) : Likewise.
(DWARF_FRAME_REGNUM) : Likewise.
(FIXED_REGISTERS) : Likewise.
(CALL_USED_REGISTERS) : Likewise.
(CALL_REALLY_USED_REGISTERS) : Likewise.
(REG_ALLOC_ORDER) : Likewise.
(enum reg_class) : Likewise.
(REG_CLASS_NAMES) : Likewise.
(REG_CLASS_CONTENTS) : Likewise.
(SPE_HIGH_REGNO_P) : New macro to identify SPE high registers.
* gcc.target/powerpc/pr60102.c: New testcase.
From-SVN: r213596
2014-08-04 16:34:34 +00:00