aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2013-04-19re PR tree-optimization/56982 (Bad optimization with setjmp())Richard Biener6-18/+100
2013-04-19 Richard Biener <rguenther@suse.de> PR tree-optimization/56982 * builtins.def (BUILT_IN_LONGJMP): longjmp is not a leaf function. * gimplify.c (gimplify_call_expr): Notice special calls. (gimplify_modify_expr): Likewise. * tree-cfg.c (make_abnormal_goto_edges): Handle setjmp-like abnormal control flow receivers. (call_can_make_abnormal_goto): Handle cfun->calls_setjmp in the same way as cfun->has_nonlocal_labels. (gimple_purge_dead_abnormal_call_edges): Likewise. (stmt_starts_bb_p): Make setjmp-like abnormal control flow receivers start a basic-block. * gcc.c-torture/execute/pr56982.c: New testcase. From-SVN: r198096
2013-04-19re PR tree-optimization/56270 (loop over array of struct float causes ↵Richard Biener4-296/+199
compiler error: segmentation fault) 2013-04-19 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (struct _slp_instance): Move load_permutation member ... (struct _slp_tree): ... here. Make it a vector of unsigned ints. (SLP_INSTANCE_LOAD_PERMUTATION): Remove. (SLP_TREE_LOAD_PERMUTATION): Add. (vect_transform_slp_perm_load): Adjust prototype. * tree-vect-slp.c (vect_free_slp_tree): Adjust. (vect_free_slp_instance): Likewise. (vect_create_new_slp_node): Likewise. (vect_supported_slp_permutation_p): Remove. (vect_slp_rearrange_stmts): Adjust. (vect_supported_load_permutation_p): Likewise. Inline vect_supported_slp_permutation_p here. (vect_analyze_slp_instance): Compute load permutations per slp node instead of per instance. (vect_get_slp_defs): Adjust. (vect_transform_slp_perm_load): Likewise. (vect_schedule_slp_instance): Remove redundant code. (vect_schedule_slp): Remove hack for PR56270, add it ... * tree-vect-stmts.c (vectorizable_load): ... here, do not CSE loads for SLP. Adjust. From-SVN: r198095
2013-04-19arm.c (load_multiple_sequence, [...]): Fix spelling in two comments.Greta Yorsh2-2/+7
2013-04-19 Greta Yorsh <Greta.Yorsh@arm.com> * config/arm/arm.c (load_multiple_sequence, ldm_stm_operation_p): Fix spelling in two comments. From-SVN: r198093
2013-04-19re PR target/56797 (internal compiler error: in extract_insn, at recog.c:2150)Greta Yorsh2-0/+13
2013-04-19 Greta Yorsh <Greta.Yorsh@arm.com> PR target/56797 * config/arm/arm.c (load_multiple_sequence): Require SP as base register for loads if SP is in the register list. From-SVN: r198091
2013-04-19re PR tree-optimization/56718 (Early inlining prevents type based ↵Martin Jambor9-18/+228
devirtualization) 2013-04-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/56718 * ipa-cp.c (ipa_value_from_known_type_jfunc): Moved... * ipa-prop.c (ipa_binfo_from_known_type_jfunc): ...here, renamed and made public. Adjusted all callers. (ipa_intraprocedural_devirtualization): New function. * ipa-prop.h (ipa_binfo_from_known_type_jfunc): Declare. (ipa_intraprocedural_devirtualization): Likewise. * Makefile.in (tree-ssa-pre.o): Add ipa-prop.h to dependencies. testsuite/ * g++.dg/ipa/imm-devirt-1.C: New test. * g++.dg/ipa/imm-devirt-2.C: Likewise. From-SVN: r198088
2013-04-19re PR tree-optimization/57000 (ICE with -Ofast and -frounding-math)Richard Biener4-1/+23
2013-04-19 Richard Biener <rguenther@suse.de> PR tree-optimization/57000 * tree-ssa-reassoc.c (pass_reassoc): Add TODO_update_ssa_only_virtuals. * gcc.dg/tree-ssa/reassoc-27.c: New testcase. From-SVN: r198087
2013-04-19re PR fortran/56872 (Incorrect SUM evaluation, involving implied-do loop, ↵Thomas Koenig7-21/+108
with -ffrontend-optimize) 2013-04-19 Thomas Koenig <tkoenig@gcc.gnu.org> Mikael Morin <mikael@gcc.gnu.org> PR fortran/56872 * frontend-passes.c (copy_walk_reduction_arg): Change argument type to gfc_constructor. If it has an iterator, wrap the copy of its expression in an array constructor with that iterator. Don't special case function expressions. (callback_reduction): Update caller. Don't return early if there is an iterator. 2013-04-19 Thomas Koenig <tkoenig@gcc.gnu.org> Mikael Morin <mikael@gcc.gnu.org> PR fortran/56872 * gfortran.dg/array_constructor_45.f90: New test. * gfortran.dg/array_constructor_46.f90: New test. * gfortran.dg/array_constructor_47.f90: New test. * gfortran.dg/array_constructor_40.f90: Adjust number of while loops. Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org> From-SVN: r198086
2013-04-19cortex-m4-fpu.md (cortex_m4_v): Delete cpu unit.Terry Guo2-6/+21
* config/arm/cortex-m4-fpu.md (cortex_m4_v): Delete cpu unit. Replace with ... (cortex_m4_v_a, cortex_m4_v_b): ... new cpu units. (cortex_m4_v, cortex_m4_exa_va, cortex_m4_exb_vb): New reservations. (cortex_m4_fmacs): Use new reservations. (cortex_m4_f_load, cortex_m4_f_store): Likewise. From-SVN: r198084
2013-04-19Fixing PR number in ChangelogsVladimir Makarov2-2/+2
From-SVN: r198083
2013-04-19[multiple changes]Vladimir Makarov5-29/+221
2013-04-18 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/56992 * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and related code. (lra_coalesce): Remove split_origin_bitmap and related code. * lra.c (lra): Coalesce after undoing inheritance. Recreate live ranges if necessary. 2013-04-18 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/56992 * g++.dg/opt/pr56999.C: New test. From-SVN: r198082
2013-04-19Daily bump.GCC Administrator1-1/+1
From-SVN: r198080
2013-04-18* config/i386/predicates.md (call_rex64_ms_sysv_operation): Fix comment.Uros Bizjak1-1/+1
From-SVN: r198070
2013-04-18i386.c (x86_64_ms_sysv_extra_clobbered_registers): New array.Uros Bizjak5-52/+82
* config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): New array. (ix86_expand_call): Remove clobbered_registers array and use x86_64_ms_sysv_extra_clobbered_registers instead. * config/i386/i386.h (x86_64_ms_sysv_extra_clobbered_registers): Declare here. * config/i386/predicates.md (call_rex64_ms_sysv_operation): New predicate. * config/i386/i386.md (*call_rex64_ms_sysv): Use call_rex64_ms_sysv_operation predicate. Remove explicit clobbers. (*call_value_rex64_ms_sysv): Ditto. From-SVN: r198069
2013-04-18expr.c (find_array_element): Don't copy expr.Tobias Burnus6-5/+27
2013-04-18 Tobias Burnus <burnus@net-b.de> * expr.c (find_array_element): Don't copy expr. * data.c (create_character_initializer): Free expr. * frontend-passes.c (combine_array_constructor): Ditto. * match.c (match_typebound_call, gfc_match_select_type): Ditto. * resolve.c (resolve_typebound_function): Free gfc_ref. From-SVN: r198068
2013-04-18dwarf2out.c (output_pubnames): Check die_perennial_p of parent instead of ↵Cary Coutant5-3/+208
die_mark. gcc/ * dwarf2out.c (output_pubnames): Check die_perennial_p of parent instead of die_mark. gcc/testsuite/ * g++.dg/debug/dwarf2/pubnames-2.C: Add -fno-debug-types-section. * g++.dg/debug/dwarf2/pubnames-3.C: New test case. From-SVN: r198067
2013-04-18typedef2.C: Add -fno-debug-types-section flag.Cary Coutant12-11/+25
gcc/testsuite/ * g++.dg/debug/dwarf2/typedef2.C: Add -fno-debug-types-section flag. * g++.dg/debug/dwarf2/typedef4.C: Likewise. * g++.dg/debug/dwarf2/static-data-member1.C: Likewise. * g++.dg/debug/dwarf2/global-used-types-1.C: Likewise. * g++.dg/debug/dwarf2/self-ref-1.C: Likewise. * g++.dg/debug/dwarf2/nested-2.C: Likewise. * g++.dg/debug/dwarf2/typedef1.C: Likewise. * g++.dg/debug/dwarf2/namespace-2.C: Likewise. * g++.dg/debug/dwarf2/integer-typedef.C: Likewise. * g++.dg/debug/dwarf2/self-ref-2.C: Likewise. * g++.dg/debug/dwarf2/explicit-constructor.C: Likewise. From-SVN: r198060
2013-04-18Simplified GIMPLE IL builder functions.Diego Novillo4-51/+159
* gimple.c (create_gimple_tmp): New. (get_expr_type): New. (build_assign): New. (build_type_cast): New. * gimple.h (enum ssa_mode): Define. (gimple_seq_set_location): New. * asan.c (build_check_stmt): Change some gimple_build_* calls to use build_assign and build_type_cast. From-SVN: r198056
2013-04-18avx2-vpop-check.h: volatility is casted away in memcmp().Grigoriy Kraynov2-1/+8
* gcc.target/i386/avx2-vpop-check.h: volatility is casted away in memcmp(). From-SVN: r198055
2013-04-18tree-vect-data-refs.c (vect_analyze_group_access): Properly handle negative ↵Richard Biener3-25/+33
step. 2013-04-18 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_analyze_group_access): Properly handle negative step. Remove redundant checks. (vect_create_data_ref_ptr): Avoid ICEs with non-constant steps. * tree-vect-stmts.c (vectorizable_load): Instead of asserting for negative step and grouped loads fail to vectorize. From-SVN: r198054
2013-04-18emit-rtl.c (reset_insn_used_flags): New function.Steven Bosscher2-22/+45
* emit-rtl.c (reset_insn_used_flags): New function. (reset_all_used_flags): Use it. (verify_insn_sharing): New function. (verify_rtl_sharing): Fix verification for SEQUENCEs. From-SVN: r198053
2013-04-18re PR tree-optimization/56984 (ICE in tree_vrp.c)Jakub Jelinek4-1/+26
PR tree-optimization/56984 * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N and (x >> M) >= N don't register any assertion if N << M is the minimum value. * gcc.c-torture/compile/pr56984.c: New test. From-SVN: r198051
2013-04-18re PR fortran/56994 (Incorrect documentation for Fortran NEAREST intrinsic ↵Tobias Burnus2-1/+6
function) 2013-04-18 Tobias Burnus <burnus@net-b.de> PR fortran/56994 * invoke.texi (NEAREST): S argument is not optional. From-SVN: r198048
2013-04-18re PR rtl-optimization/56992 (building Wine with -Og causes GCC to seg fault)Jakub Jelinek2-0/+23
PR rtl-optimization/56992 * gcc.dg/pr56992.c: New test. From-SVN: r198046
2013-04-18Daily bump.GCC Administrator1-1/+1
From-SVN: r198045
2013-04-17lower-subreg.c (resolve_simple_move): If called self-recursive...Steven Bosscher3-11/+14
* lower-subreg.c (resolve_simple_move): If called self-recursive, do not delete_insn insns that have not yet been emitted, only unlink them with remove_insn. * df-scan.c (df_insn_delete): Revert r197492. From-SVN: r198042
2013-04-17fix previous commit, include reviewer request.Steven Bosscher1-2/+0
From-SVN: r198037
2013-04-17emit-rtl.c (link_insn_into_chain): Handle chaining of SEQUENCEs.Steven Bosscher3-76/+37
* emit-rtl.c (link_insn_into_chain): Handle chaining of SEQUENCEs. * reorg.c (emit_delay_sequence): Simplify with emit-rtl API. From-SVN: r198036
2013-04-17re PR fortran/56814 (Bogus Interface mismatch in dummy procedure)Janus Weil4-2/+56
2013-04-17 Janus Weil <janus@gcc.gnu.org> PR fortran/56814 * interface.c (check_result_characteristics): Get result from interface if present. 2013-04-17 Janus Weil <janus@gcc.gnu.org> PR fortran/56814 * gfortran.dg/proc_ptr_42.f90: New. From-SVN: r198032
2013-04-172013-04-17 Greta Yorsh <Greta.Yorsh at arm.com>Greta Yorsh2-28/+158
* config/arm/arm.md (movsicc_insn): Convert define_insn into define_insn_and_split. (and_scc,ior_scc,negscc): Likewise. (cmpsi2_addneg, subsi3_compare): Convert to named patterns. From-SVN: r198030
2013-04-172013-04-17 Greta Yorsh <Greta.Yorsh at arm.com>Greta Yorsh2-0/+10
* config/arm/arm.c (use_return_insn): Return 0 for targets that can benefit from using a sequence of LDRD instructions in epilogue instead of a single LDM instruction. From-SVN: r198029
2013-04-17re PR web/45688 (Typo in __attribute__((version-id)) docs)Manuel López-Ibáñez2-1/+6
2013-04-17 Manuel López-Ibáñez <manu@gcc.gnu.org> PR 45688 * doc/extend.texi: Fix typo. From-SVN: r198028
2013-04-17tree-vect-slp.c (vect_build_slp_tree_1): Split out from ...Richard Biener2-174/+205
2013-04-17 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_build_slp_tree_1): Split out from ... (vect_build_slp_tree): ... here. (vect_build_slp_tree_1): Compute which stmts of the SLP group match. Remove special-casing of mismatched complex loads. (vect_build_slp_tree): Based on the result from vect_build_slp_tree_1 re-try the match with swapped commutative operands. (vect_supported_load_permutation_p): Remove special-casing of mismatched complex loads. (vect_analyze_slp_instance): Adjust. From-SVN: r198026
2013-04-17re PR rtl-optimization/56921 (ICE in rtx_cost called by ↵Richard Biener4-14/+32
doloop_optimize_loops for PPC) 2013-04-17 Richard Biener <rguenther@suse.de> PR rtl-optimization/56921 * cfgloop.h (struct loop): Add simple_loop_desc member. (struct niter_desc): Mark with GTY(()). (simple_loop_desc): Do not use aux field but simple_loop_desc. * loop-iv.c (get_simple_loop_desc): Likewise. (free_simple_loop_desc): Likewise. Revert 2013-04-16 Richard Biener <rguenther@suse.de> PR rtl-optimization/56921 * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_do_not_ggc_collect to todo_flags_finish. (pass_rtl_unswitch): Same. (pass_rtl_unroll_and_peel_loops): Same. (pass_rtl_doloop): Same. From-SVN: r198025
2013-04-17tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): New.Eric Botcazou35-70/+328
* tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): New. (decl_refs_may_alias_p): Add REF1 and REF2 parameters. Use nonoverlapping_component_refs_of_decl_p to disambiguate component references. (refs_may_alias_p_1): Adjust call to decl_refs_may_alias_p. * tree-streamer.c (record_common_node): Adjust reference in comment. From-SVN: r198024
2013-04-17PR 40958 Compress module files with zlib.Janne Blomqvist8-109/+204
frontend ChangeLog: 2013-04-17 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/40958 * scanner.h: New file. * Make-lang.in: Dependencies on scanner.h. * scanner.c (gfc_directorylist): Move to scanner.h. * module.c: Don't include md5.h, include scanner.h and zlib.h. (MOD_VERSION): Add comment about backwards compatibility. (module_fp): Change type to gzFile. (ctx): Remove. (gzopen_included_file_1): New function. (gzopen_included_file): New function. (gzopen_intrinsic_module): New function. (write_char): Use gzputc. (read_crc32_from_module_file): New function. (read_md5_from_module_file): Remove. (gfc_dump_module): Use gz* functions instead of stdio, check gzip crc32 instead of md5. (read_module_to_tmpbuf): Use gz* functions instead of stdio. (gfc_use_module): Use gz* functions. testsuite ChangeLog: 2013-04-17 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/40958 * lib/gcc-dg.exp (scan-module): Uncompress module file before scanning. * gfortran.dg/module_md5_1.f90: Remove. From-SVN: r198023
2013-04-17* config/arm/cortex-m4.md: Add a new bypass.Terry Guo2-0/+8
From-SVN: r198021
2013-04-17aarch64.md (*adds_<optab><mode>_multp2): New pattern.Naveen H.S5-0/+207
gcc/ 2013-04-16 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> * config/aarch64/aarch64.md (*adds_<optab><mode>_multp2): New pattern. (*subs_<optab><mode>_multp2): New pattern. (*adds_<optab><ALLX:mode>_<GPI:mode>): New pattern. (*subs_<optab><ALLX:mode>_<GPI:mode>): New pattern. gcc/testsuite/ 2013-04-16 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> * gcc.target/aarch64/adds3.c: New. * gcc.target/aarch64/subs3.c: New. From-SVN: r198020
2013-04-17aarch64.md (*adds_mul_imm_<mode>): New pattern.Naveen H.S7-0/+654
gcc/ 2013-04-16 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> * config/aarch64/aarch64.md (*adds_mul_imm_<mode>): New pattern. (*subs_mul_imm_<mode>): New pattern. gcc/testsuite/ 2013-04-16 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> * gcc.target/aarch64/adds1.c: New. * gcc.target/aarch64/adds2.c: New. * gcc.target/aarch64/subs1.c: New. * gcc.target/aarch64/subs2.c: New. From-SVN: r198019
2013-04-17Implement n3599 String literal operator templates.Ed Smith-Rowland5-5/+101
From-SVN: r198018
2013-04-17Daily bump.GCC Administrator1-1/+1
From-SVN: r198017
2013-04-16re PR fortran/39505 (Consider a 'no arg check' directive)Tobias Burnus10-16/+481
2013-04-12 Tobias Burnus <burnus@net-b.de> PR fortran/39505 * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK. * gfortran.h (ext_attr_id_t): Ditto. * gfortran.texi (GNU Fortran Compiler Directives): Document it. * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK. (compare_parameter): Ditto - and regard as unlimited polymorphic. * resolve.c (resolve_symbol, resolve_variable): Add same * constraint checks as for TYPE(*); turn dummy to TYPE(*),dimension(*). (gfc_explicit_interface_required): Require explicit interface for NO_ARG_CHECK. 2013-04-12 Tobias Burnus <burnus@net-b.de> PR fortran/39505 * gfortran.dg/no_arg_check_1.f90: New. * gfortran.dg/no_arg_check_2.f90: New. * gfortran.dg/no_arg_check_3.f90: New. From-SVN: r198011
2013-04-16re PR fortran/56968 ([F03] Issue with a procedure defined with a generic ↵Janus Weil4-1/+53
name returning procedure pointer) 2013-04-16 Janus Weil <janus@gcc.gnu.org> PR fortran/56968 * expr.c (gfc_check_pointer_assign): Handle generic functions returning procedure pointers. 2013-04-16 Janus Weil <janus@gcc.gnu.org> PR fortran/56968 * gfortran.dg/proc_ptr_41.f90: New. From-SVN: r198008
2013-04-16re PR target/56948 (PPC V2DI ICE when loading zero into GPRs)David Edelsohn2-11/+20
PR target/56948 * config/rs6000/vsx.md (vsx_mov<mode>): Add j->r alternative. (vsx_movti_64bit): Change j->wa to O->wa. Add n->r alternative. (vsx_movti_32bit): Change j->wa to O->wa. From-SVN: r198007
2013-04-16re PR rtl-optimization/56921 (ICE in rtx_cost called by ↵Richard Biener2-4/+17
doloop_optimize_loops for PPC) 2013-04-16 Richard Biener <rguenther@suse.de> PR rtl-optimization/56921 * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_do_not_ggc_collect to todo_flags_finish. (pass_rtl_unswitch): Same. (pass_rtl_unroll_and_peel_loops): Same. (pass_rtl_doloop): Same. From-SVN: r198006
2013-04-16Prologue/epilogue using STRD/LDRD in ARM modeGreta Yorsh2-2/+300
2013-04-16 Greta Yorsh <Greta.Yorsh at arm.com> * config/arm/arm.c (emit_multi_reg_push): New declaration for an existing function. (arm_emit_strd_push): New function. (arm_expand_prologue): Used here. (arm_emit_ldrd_pop): New function. (arm_expand_epilogue): Used here. (arm_get_frame_offsets): Update condition. (arm_emit_multi_reg_pop): Add a special case for load of a single register with writeback. From-SVN: r198004
2013-04-16invoke.texi (i386 Option): Reword -mstack-protector-guard description.Uros Bizjak2-3/+8
* doc/invoke.texi (i386 Option): Reword -mstack-protector-guard description. From-SVN: r198002
2013-04-16re PR tree-optimization/56756 (ICE: verify_ssa failed (definition in block n ↵Richard Biener4-6/+76
follows the use !)) 2013-04-16 Richard Biener <rguenther@suse.de> PR tree-optimization/56756 * tree-ssa-loop-im.c (struct first_mem_ref_loc_1): New functor. (first_mem_ref_loc): New. (execute_sm): Place the load temporarily before a previous access instead of in the latch edge to ensure its SSA dependencies are defined at points dominating the load. * gcc.dg/torture/pr56756.c: New testcase. From-SVN: r198001
2013-04-16re PR fortran/56969 (ISO_C_BINDING regression with current trunk)Tobias Burnus4-1/+83
2013-04-16 Tobias Burnus <burnus@net-b.de> PR fortran/56969 * intrinsic.c (gfc_intrinsic_func_interface): Don't set module name to "(intrinsic)" for intrinsics from intrinsic modules. 2013-04-16 Tobias Burnus <burnus@net-b.de> PR fortran/56969 * gfortran.dg/c_assoc_5.f90: New. From-SVN: r198000
2013-04-16cfgrtl.c (cfg_layout_merge_blocks): Revert r184005...Steven Bosscher2-29/+38
* cfgrtl.c (cfg_layout_merge_blocks): Revert r184005, implement correct fix by moving header and footer insn to the footer of the merged basic block. Clear BB_END of the merged-away block. From-SVN: r197995
2013-04-16re PR middle-end/43631 (var-tracking inserts notes with non-NULL ↵Steven Bosscher5-123/+197
BLOCK_FOR_INSN in between basic blocks) PR middle-end/43631 * emit-rtl.c (make_note_raw): New function. (link_insn_into_chain): New static inline function. (add_insn): Use it. (add_insn_before, add_insn_after): Factor insn chain linking code... (add_insn_before_nobb, add_insn_after_nobb): ...here, new functions using link_insn_into_chain. (note_outside_basic_block_p): New helper function for emit_note_after and emit_note_before. (emit_note_after): Use nobb variant of add_insn_after if the note should not be contained in a basic block. (emit_note_before): Use nobb variant of add_insn_before if the note should not be contained in a basic block. (emit_note_copy): Use make_note_raw. (emit_note): Likewise. * bb-reorder.c (insert_section_boundary_note): Remove hack to set BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS. * jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making the moved barrier the tail of the basic block it follows. * var-tracking.c (pass_variable_tracking): Add TODO_verify_flow. From-SVN: r197994