aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2016-05-05openmp.c (gfc_match_omp_clauses): Restructuralize...Jakub Jelinek2-587/+658
* openmp.c (gfc_match_omp_clauses): Restructuralize, so that clause parsing is done in a big switch based on gfc_peek_ascii_char and individual clauses under their first letters are sorted too. From-SVN: r235922
2016-05-05sse.md (<avx512>_fmadd_<mode>_mask3<round_name>): Use v constraint instead of x.Jakub Jelinek4-2/+36
* config/i386/sse.md (<avx512>_fmadd_<mode>_mask3<round_name>): Use v constraint instead of x. * gcc.target/i386/avx512f-vfmadd-1.c: New test. From-SVN: r235921
2016-05-05c-parser.c (c_parser_switch_statement): Add IF_P argument, parse it through ↵Jakub Jelinek6-5/+52
to c_parser_c99_block_statement. * c-parser.c (c_parser_switch_statement): Add IF_P argument, parse it through to c_parser_c99_block_statement. (c_parser_statement_after_labels): Adjust c_parser_switch_statement caller. * parser.c (cp_parser_selection_statement): For RID_SWITCH, pass if_p instead of NULL to cp_parser_implicitly_scoped_statement. * c-c++-common/Wdangling-else-4.c: New test. From-SVN: r235920
2016-05-05Daily bump.GCC Administrator1-1/+1
From-SVN: r235918
2016-05-05[RS6000] TARGET_RELOCATABLEAlan Modra8-46/+65
For ABI_V4, -mrelocatable and -fPIC both generate position independent code, with some extra "fixup" output for -mrelocatable. The similarity of these two options has led to the situation where the sysv4.h SUBTARGET_OVERRIDE_OPTIONS sets flag_pic on seeing -mrelocatable, and sets TARGET_RELOCATABLE on seeing -fPIC. That prevents LTO from properly optimizing position dependent executables, because the mutual dependence of the flags and the fact that LTO streaming records the state of rs6000_isa_flags, result in flag_pic being set when it shouldn't be. So, don't set TARGET_RELOCATABLE when -fPIC. Places that currently test TARGET_RELOCATABLE can instead test TARGET_RELOCATABLE || (DEFAULT_ABI == ABI_V4 && flag_pic > 1) or since TARGET_RELOCATABLE can only be enabled when ABI_V4, DEFAULT_ABI == ABI_V4 && (TARGET_RELOCATABLE || flag_pic > 1). Also, since flag_pic is set by -mrelocatable, a number of places that currently test TARGET_RELOCATABLE can be simplified. I also made -mrelocatable set TARGET_NO_FP_IN_TOC, allowing TARGET_RELOCATABLE to be removed from ASM_OUTPUT_SPECIAL_POOL_ENTRY_P. Reducing occurrences of TARGET_RELOCATABLE is a good thing. PR target/68662 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Don't set OPTION_MASK_RELOCATABLE when flag_pic == 2. Set TARGET_NO_FP_IN_TOC for -mrelocatable. (MINIMAL_TOC_SECTION_ASM_OP): Remove redundant TARGET_RELOCATABLE test. (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. * config/rs6000/linux64.h (MINIMAL_TOC_SECTION_ASM_OP): Likewise. (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. * config/rs6000/freebsd64.h (MINIMAL_TOC_SECTION_ASM_OP): Likewise. (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise. (ASM_PREFERRED_EH_DATA_FORMAT): Likewise. * config/rs6000/predicates.md (easy_fp_constant): Likewise. * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): Likewise. (rs6000_assemble_integer): Update TARGET_RELOCATABLE test. (rs6000_stack_info): Likewise. (rs6000_elf_asm_out_constructor): Likewise. (rs6000_elf_asm_out_destructor): Likewise. (rs6000_elf_declare_function_name): Likewise. * config/rs6000/rs6000.md (load_toc_aix_di): Likewise. * config/rs6000/rs6000.h (MASK_RELOCATABLE, MASK_MINIMAL_TOC): Don't define. From-SVN: r235914
2016-05-05[RS6000] Rewrite rs6000_frame_related to use simplify_replace_rtxAlan Modra2-70/+48
Modify SETs rather than using replace_rtx on the whole insn. Removes fragile hacks preventing USE and CLOBBER being modified. * config/rs6000/rs6000.c (rs6000_frame_related): Rewrite. From-SVN: r235913
2016-05-05[RS6000] out-of-line exit register restore funcsAlan Modra2-9/+21
* config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use out-of-line gpr restore for one or two regs if that would add a save of lr. From-SVN: r235907
2016-05-04re PR target/70873 ([7 Regressio] 20% performance regression at 482.sphinx3 ↵Uros Bizjak2-56/+77
after r235442 with -O2 -m32 on Haswell.) PR target/70873 * config/i386/i386.md (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_extend sf->df peephole2): Change to post-epilogue_completed late splitter. Use sse_reg_operand as operand 0 predicate. (TARGET_SSE_PARTIAL_REG_DEPENDENCY float_truncate df->sf peephole2): Ditto. (TARGET_SSE_PARTIAL_REG_DEPENDENCY float {si,di}->{sf,df} peephole2): Ditto. Emit the pattern using RTX. (TARGET_USE_VECTOR_FP_CONVERTS float_extend sf->df splitter): Use sse_reg_opreand as operand 0 predicate. Do not use true_regnum in the post-reload splitter. Use lowpart_subreg instead of gen_rtx_REG. (TARGET_USE_VECTOR_FP_CONVERTS float_truncate df->sf splitter): Ditto. (TARGET_USE_VECTOR_CONVERTS float si->{sf,df} splitter): Use sse_reg_operand as operand 0 predicate. (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS float_extend sf->df peephole2): Use sse_reg_opreand as operand 0 predicate. Use lowpart_subreg instead of gen_rtx_REG. (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS float_truncate sf->df peephole2): Ditto. From-SVN: r235906
2016-05-04shrink-wrap: Remove complicated simple_return manipulationsSegher Boessenkool4-374/+33
Now that cfgcleanup knows how to optimize with return statements, the epilogue insertion code doesn't have to deal with it itself anymore. * function.c (emit_use_return_register_into_block): Delete. (gen_return_pattern): Delete. (emit_return_into_block): Delete. (active_insn_between): Delete. (convert_jumps_to_returns): Delete. (emit_return_for_exit): Delete. (thread_prologue_and_epilogue_insns): Delete all code dealing with simple_return for shrink-wrapped blocks. * shrink-wrap.c (try_shrink_wrapping): Insert simple_return at the end of blocks that need one. (get_unconverted_simple_return): Delete. (convert_to_simple_return): Delete. * shrink-wrap.c (get_unconverted_simple_return): Delete declaration. (convert_to_simple_return): Ditto. From-SVN: r235905
2016-05-04cfgcleanup: Fold jumps and conditional branches with returnsSegher Boessenkool2-0/+127
This patch makes cfgcleanup optimize jumps to returns. There are three cases this handles: -- A jump to a return; this is simplified to just that return. -- A conditional branch to a return; simplified to a conditional return. -- A conditional branch that falls through to a return. This is simplified to a conditional return (with the condition inverted), falling through to a jump to the original destination. That jump can then be optimized further, as usual. This handles all cases the current function.c does, and a few it misses. * cfgcleanup.c (bb_is_just_return): New function. (try_optimize_cfg): Simplify jumps to return, branches to return, and branches around return. From-SVN: r235904
2016-05-04cfgcleanup: Bugfix in try_simplify_condjumpSegher Boessenkool2-0/+6
If the jump_block here contains just a return, we will crash later in invert_jump. Don't allow that case. * cfgcleanup.c (try_simplify_condjump): Don't try to simplify a branch to a return. From-SVN: r235903
2016-05-04re PR c++/70906 (ice in add_expr, at tree.c:7925)Jakub Jelinek7-4/+130
PR c++/70906 PR c++/70933 * tree-core.h (enum operand_equal_flag): Add OEP_HASH_CHECK. * tree.c (inchash::add_expr): If !IS_EXPR_CODE_CLASS (tclass), assert flags & OEP_HASH_CHECK, instead of asserting it never happens. Handle TARGET_EXPR. * fold-const.c (operand_equal_p): For hash verification, or in OEP_HASH_CHECK into flags. * g++.dg/opt/pr70906.C: New test. * g++.dg/opt/pr70933.C: New test. From-SVN: r235902
2016-05-04tree-ssa-coalesce.c (gimple_can_coalesce_p): Fix reference in head comment.Eric Botcazou2-2/+9
* tree-ssa-coalesce.c (gimple_can_coalesce_p): Fix reference in head comment. (compute_samebase_partition_bases): Fix typo. From-SVN: r235900
2016-05-04sse.md (vec_interleave_highv8sf, [...]): Remove constraints from expanders.Jakub Jelinek2-8/+12
* config/i386/sse.md (vec_interleave_highv8sf, vec_interleave_lowv8sf, vec_interleave_highv4df, vec_interleave_lowv4df): Remove constraints from expanders. From-SVN: r235898
2016-05-04s-osinte-gnu.ads (Get_Page_Size): Return int and use getpagesize instead of ↵Samuel Thibault2-4/+8
__getpagesize. * s-osinte-gnu.ads (Get_Page_Size): Return int and use getpagesize instead of __getpagesize. From-SVN: r235896
2016-05-04sse.md (sse2_movq128): Use v constraint instead of x.Jakub Jelinek4-2/+26
* config/i386/sse.md (sse2_movq128): Use v constraint instead of x. * gcc.target/i386/avx512vl-vmovq-1.c: New test. From-SVN: r235893
2016-05-04tree-inline.c (expand_call_inline): Fix path dealing with making lhs of call ↵Jan Hubicka2-1/+11
statement undefined. * tree-inline.c (expand_call_inline): Fix path dealing with making lhs of call statement undefined. From-SVN: r235889
2016-05-04cgraph.c (cgraph_node::call_for_symbol_thunks_and_aliases): Check ↵Jan Hubicka6-64/+123
availability on NODE, too. * cgraph.c (cgraph_node::call_for_symbol_thunks_and_aliases): Check availability on NODE, too. * cgraph.h (symtab_node::call_for_symbol_and_aliases): Likewise. (cgraph_node::call_for_symbol_and_aliases): Likewise. (varpool_node::call_for_symbol_and_aliase): Likewise. * ipa-pure-const.c (add_new_function): Analyze all bodies. (propagate_pure_const): Propagate across interposable functions, too. (skip_function_for_local_pure_const): Do not skip interposable bodies with aliases. (pass_local_pure_const::execute): Update. * gcc.dg/ipa/pure-const-3.c: New testcase. From-SVN: r235887
2016-05-04c.opt (Wdangling-else): New option.Marek Polacek12-43/+116
* c.opt (Wdangling-else): New option. * c-parser.c (c_parser_if_statement): Replace OPT_Wparentheses with OPT_Wdangling_else. * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses with OPT_Wdangling_else. * doc/invoke.texi: Document -Wdangling-else. * c-c++-common/Wdangling-else-1.c: New test. * c-c++-common/Wdangling-else-2.c: New test. * c-c++-common/Wdangling-else-3.c: New test. From-SVN: r235885
2016-05-04mips16-attributes.c: Skip if -mmicromips flag is present.Kwok Cheung Yeung2-0/+6
2016-05-04 Kwok Cheung Yeung <kcy@codesourcery.com> * gcc.target/mips/mips16-attributes.c: Skip if -mmicromips flag is present. From-SVN: r235881
2016-05-04re PR c/48778 (gcc 4.6 -Waddress adds unhelpful new warning case when using ↵Marek Polacek4-2/+39
from a macro) PR c/48778 * c-typeck.c (build_binary_op): Don't issue -Waddress warnings for macro expansions. * gcc.dg/Waddress-2.c: New test. From-SVN: r235878
2016-05-04config.gcc: Error out when conflicting multilib is detected.Thomas Preud'homme2-25/+32
2016-05-04 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ * config.gcc: Error out when conflicting multilib is detected. Do not loop over multilibs since no combination is legal. From-SVN: r235877
2016-05-04[RS6000] Correct PIC_OFFSET_TABLE_REGNUMAlan Modra2-1/+5
Leaving this as r30 results in pic_offset_table_rtx of (reg 30) for -m64, which is completely bogus. Various rtl analysis predicate functions treat pic_offset_table_rtx specially.. * config/rs6000/rs6000.h (PIC_OFFSET_TABLE_REGNUM): Correct. From-SVN: r235876
2016-05-04[RS6000] Simplify sysv4.h TARGET_TOCAlan Modra2-4/+3
We can use the TARGET_* defines here. There isn't any reason to use the underlying variable and masks. Also, TARGET_RELOCATABLE implies TARGET_MINIMAL_TOC, so there is no need to test TARGET_RELOCATABLE. * config/rs6000/sysv4.h (TARGET_TOC): Simplify. From-SVN: r235875
2016-05-04[RS6000] Align .toc sectionAlan Modra2-3/+18
Lack of any .toc section alignment causes kexec and kdump failure when linking without the usual linker script. This of course is really a kexec-tools error, but it is also true that .toc ought to always be word aligned. * config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op): Align .toc. From-SVN: r235874
2016-05-04Update MIPS P5600 processor definition to avoid IMADDMatthew Fortune2-5/+8
gcc/ * config/mips/mips-cpus.def (p5600): Avoid IMADD by default. Clean up p5600 comments. From-SVN: r235873
2016-05-04match.pd: Add BIT_FIELD_REF canonicalizations and vector constructor ↵Richard Biener3-72/+117
simplifications. 2016-05-04 Richard Biener <rguenther@suse.de> * match.pd: Add BIT_FIELD_REF canonicalizations and vector constructor simplifications. * fold-const.c (fold_ternary_loc): Remove duplicate functionality here. From-SVN: r235871
2016-05-04predicates (post_inc_mem, [...]): New predicates.Oleg Endo5-8/+58
gcc/ * config/sh/predicates (post_inc_mem, pre_dec_mem): New predicates. * config/sh/sh-protos.h (sh_find_set_of_reg): Return null result if result.set_rtx is null instead of aborting. * config/sh/sh.h (USE_LOAD_POST_INCREMENT, USE_STORE_PRE_DECREMENT): Always enable. (USE_LOAD_PRE_DECREMENT, USE_STORE_POST_INCREMENT): Enable for SH2A. * config/sh/sh.md (*extend<mode>si2_predec, *mov<mode>_load_predec, *mov<mode>_store_postinc): New patterns. From-SVN: r235859
2016-05-04Remove duplicate (A & B) OP (C & B) in match.pd.Marc Glisse2-10/+11
2016-05-04 Marc Glisse <marc.glisse@inria.fr> * match.pd ((A | B) & (A | C)): Generalize to BIT_XOR_EXPR. Mark as commutative. Check both conversions are NOP. ((A & B) OP (C & B)): Remove. From-SVN: r235858
2016-05-04Daily bump.GCC Administrator1-1/+1
From-SVN: r235856
2016-05-04Combine simplify_set WORD_REGISTER_OPERATIONSAlan Modra2-1/+5
The comment says this test is supposed to prevent "a narrower operation than requested", but it actually only allows a larger subreg not one the same size. Fix that. * combine.c (simplify_set): Correct WORD_REGISTER_OPERATIONS test. From-SVN: r235852
2016-05-04[RS6000] powerpc64le -ffixed-cr2 -ffixed-cr3 -ffixed-cr4 ICEAlan Modra4-3/+24
gcc/ PR target/70866 * config/rs6000/rs6000.c (rs6000_stack_info): Don't set cr_save_p when cr2,3,4 are all fixed regs. gcc/testsuite/ * gcc.target/powerpc/pr70866.c: New. From-SVN: r235851
2016-05-03re PR rtl-optimization/57193 (suboptimal register allocation for SSE registers)Bernd Schmidt3-4/+7
PR rtl-optimization/57193 * opts.c (default_options_table): Revert OPT_frename_registers change. * doc/invoke.texi (-frename-registers, -O2): Likewise. From-SVN: r235848
2016-05-03PR c++/66561 - __builtin_LINE at al. should yield constant expressionsMartin Sebor9-42/+366
PR c++/66561 - __builtin_LINE at al. should yield constant expressions PR c++/66639 - declare __func__, __FUNCTION__ & __PRETTY_FUNCTION__ constexpr gcc/testsuite/ChangeLog: 2016-05-03 Martin Sebor <msebor@redhat.com> PR c++/66561 * c-c++-common/builtin_location.c: New test. * g++.dg/cpp1y/builtin_location.C: New test. gcc/cp/ChangeLog: 2016-05-03 Martin Sebor <msebor@redhat.com> PR c++/66561 * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE, BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions. gcc/ChangeLog: 2016-05-03 Martin Sebor <msebor@redhat.com> PR c++/66561 * builtins.c (fold_builtin_FILE): New function. (fold_builtin_FUNCTION, fold_builtin_LINE): New functions. (fold_builtin_0): Call them. * gimplify.c (gimplify_call_expr): Remove the handling of BUILT_IN_FILE, BUILT_IN_FUNCTION, and BUILT_IN_LINE. PR c++/66561 * doc/extend.texi (Other Builtins): Update __builtin_FILE, __builtin_FUNCTION, and __builtin_LINE to reflect they yield constants. PR c++/66639 * doc/extend.texi (Function Names as Strings): Update __func__, __FUNCTION__, __PRETTY_FUNCTION__ to reflect they evaluate to constants. From-SVN: r235845
2016-05-03re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on ↵Jakub Jelinek2-0/+19
x86_64-linux-gnu in "tree_operand_check") PR tree-optimization/70916 * tree-if-conv.c: Include cfganal.h. (pass_if_conversion::execute): Call connect_infinite_loops_to_exit and remove_fake_exit_edges around the optimization pass. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r235842
2016-05-03cgraph.c (symbol_table::create_edge): Set inline_failed.Jan Hubicka9-30/+71
* cgraph.c (symbol_table::create_edge): Set inline_failed. (cgraph_edge::make_direct): Likewise. (cgraph_edge::dump_edge_flags): Dump call_stmt_cannot_inline_p. * cgraphclones.c (duplicate_thunk_for_node): Set inline_failed. * cif-code.def (CIF_LTO_MISMATCHED_DECLARATIONS): New code (CIF_THUNK): New code. * ipa-inline-analysis.c (initialize_inline_failed): Preserve CIF_FINAL_ERROR codes; do not deal with call_stmt_cannot_inline_p. (compute_inline_parameters): Set inline_failed for thunks. (inline_analyze_function): Cleanup. * ipa-inline.c (can_inline_edge_p): Do not deal with call_stmt_cannot_inline_p. (can_early_inline_edge_p): Likewise. (early_inliner): Initialize inline_failed. * lto-cgraph.c (lto_output_edge): Sanity check inline_failed. * lto-symtab.c (lto_cgraph_replace_node): Initialize inline_failed. From-SVN: r235839
2016-05-03predicates.md (x87nonimm_ssenomem_operand): Rename from nonimm_ssenomem_operand.Uros Bizjak3-32/+46
* config/i386/predicates.md (x87nonimm_ssenomem_operand): Rename from nonimm_ssenomem_operand. (nonimm_ssenomem_operand): New predicate. * config/i386/i386.md (extendsfdf2): Use nonimm_ssenomem_operand as operand 0 predicate. (*extendsfdf2): Merge from *extendsfdf2_mixed and *extendsfdf2_i387. Disable unsupported alternatives using "enabled" attribute. Use register_ssemem_operand as operand 0 predicate. (*fop_<mode>_1): Use x87nonimm_ssenomem_operand as operand 1 predicate. From-SVN: r235837
2016-05-03re PR c/70859 (Bad column number in type-generic function errors)Marek Polacek13-36/+177
PR c/70859 * input.c (expansion_point_location): New function. * input.h (expansion_point_location): Declare. * c-common.c (builtin_function_validate_nargs): Add location parameter. Use it. (check_builtin_function_arguments): Add location and arguments parameters. Use them. * c-common.h (check_builtin_function_arguments): Update declaration. * c-typeck.c (build_function_call_vec): Pass LOC and ARG_LOC down to check_builtin_function_arguments. * call.c (build_cxx_call): Pass location and vNULL down to check_builtin_function_arguments. * gcc.dg/pr70859.c: New test. * gcc.dg/pr70859-2.c: New test. From-SVN: r235832
2016-05-03Fix a typo in dwarf2out.c:resolve_args_picking_1Pierre-Marie de Rodat4-1/+32
Under specific circumstances for Ada programs, such as in the testcase this change adds, the DWARF back-end currently crashes because of inconsistent internal state. This is due to a typo: a local variable is called frame_offset_ but resolve_args_picking_1 wrongly modifies emit-rtl.h's frame_offset instead. This change fixes this typo. gcc/ * dwarf2out.c (resolve_args_picking_1): Replace the frame_offset occurence with frame_offset_ ones. gcc/testsuite/ * gnat.dg/debug5.adb: New testcase. From-SVN: r235830
2016-05-04PR70890, stage2 miscompilationAlan Modra2-0/+22
PR rtl-optimization/70890 * ira.c (combine_and_move_insns): When moving def_insn, remove equivs on use_insn. From-SVN: r235825
2016-05-03S/390: Add patterns for r<nox>sbg instructions.Dominik Vogt5-2/+207
gcc/ChangeLog: 2016-05-03 Dominik Vogt <vogt@linux.vnet.ibm.com> * config/s390/s390.md ("*r<noxa>sbg_<mode>_sll") ("*r<noxa>sbg_<mode>_srl"): New define_insns. ("*r<noxa>sbg_<mode>_srl_bitmask"): Rename by adding "_bitmask". ("*r<noxa>sbg_<mode>_sll_bitmask"): Likewise. gcc/testsuite/ChangeLog: 2016-05-03 Dominik Vogt <vogt@linux.vnet.ibm.com> * gcc.target/s390/md/rXsbg_mode_sXl.c: New test. * gcc.target/s390/s390.exp (check_effective_target_z10_instructions): Procedure to check for z10 instruction set. From-SVN: r235822
2016-05-03inline-8.c: Require c99_runtime.Christophe Lyon2-0/+6
* gcc.dg/ipa/inline-8.c: Require c99_runtime. From-SVN: r235821
2016-05-03[RS6000] Fix ICE caused by rs6000_savres_strategy thinkoAlan Modra4-1/+22
rev 235672 (git cffc0b35) changed the condition for SAVE_MULTIPLE/ STORE_MULTIPLE, wrongly allowing a single reg. gcc/ * config/rs6000/rs6000.c (rs6000_savres_strategy): Correct condition for SAVE_MULTIPLE/STORE_MULTIPLE. gcc/testsuite/ * gcc.target/powerpc/savres.c: Add func using a single gpr. From-SVN: r235820
2016-05-03* config/i386/i386.md (*truncdfsf_mixed, *truncdfsf_i387,Jakub Jelinek4-5/+53
*truncxfsf2_mixed, *truncxfdf2_mixed): Use v constraint instead of x. * gcc.target/i386/avx512f-cvt-1.c: New test. From-SVN: r235819
2016-05-03Compile ssa-thread-14.c with -fdump-tree-vrp-detailsH.J. Lu2-1/+6
* gcc.dg/tree-ssa/ssa-thread-14.c: Replace -fdump-tree-vrp with -fdump-tree-vrp-details. From-SVN: r235818
2016-05-03gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter default true.Richard Biener31-158/+268
2016-05-03 Richard Biener <rguenther@suse.de> * gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter default true. (gimplify_arg): Likewise. * gimplify.c (gimplify_expr): Add overload with allow_ssa parameter, re-writing the result to a decl if required. (internal_get_tmp_var): Add allow_ssa parameter and override into_ssa with it. (get_formal_tmp_var): Adjust. (get_initialized_tmp_var): Add allow_ssa parameter. (gimplify_arg): Add allow_ssa parameter and avoid generating SSA names for the result false. (gimplify_call_expr): If the call may return twice do not gimplify parameters into SSA. (prepare_gimple_addressable): Do not allow an SSA name as temporary. (gimplify_modify_expr): Adjust assert. For noreturn calls with a SSA name LHS adjust its def. (gimplify_save_expr): Do not allow an SSA name as save-expr result. (gimplify_one_sizepos): Do not allow an SSA name as a sizepos. (gimplify_body): Init GIMPLE SSA data structures and gimplify into-SSA. (gimplify_scan_omp_clauses): Make sure OMP_CLAUSE_SIZE is not an SSA name. Likewise for OMP_CLAUSE_REDUCTION operands. (gimplify_omp_for): Likewise for OMP_CLAUSE_DECL. Likewise for OMP_FOR_COND, OMP_FOR_INCR and OMP_CLAUSE_LINEAR_STEP. (optimize_target_teams): Do not allow SSA names for clause operands. (gimplify_expr): Likewise for where we mark the result addressable. * passes.def (pass_init_datastructures): Remove. * tree-into-ssa.c (mark_def_sites): Ignore existing SSA names. (rewrite_stmt): Likewise. * tree-inline.c (initialize_cfun): Properly transfer SSA state. (replace_locals_op): Replace SSA names. (copy_gimple_seq_and_replace_locals): Init src_cfun. * gimple-low.c (lower_builtin_setjmp): Deal with SSA. * cgraph.c (release_function_body): Free CFG annotations only when we have a CFG. Simplify. * gimple-fold.c (gimplify_and_update_call_from_tree): Use force_gimple_operand instead of get_initialized_tmp_var. * tree-pass.h (make_pass_init_datastructures): Remove. * tree-ssa.c (execute_init_datastructures): Remove. (pass_data_init_datastructures): Likewise. (class pass_init_datastructures): Likewise. (make_pass_init_datastructures): Likewise. * omp-low.c (create_omp_child_function): Init SSA data structures. (grid_expand_target_grid_body): Likewise. * tree-cfg.c (move_block_to_fn): Double-check the DEF is an SSA name before adding it to names_to_release. (remove_bb): Always release SSA defs. * tree-ssa-ccp.c (get_default_value): Check SSA_NAME_VAR before dereferencing it. * cgraphunit.c (init_lowered_empty_function): Always int SSA data structures. * tree-ssanames.c (release_defs): Remove assert that we are in SSA form. * trans-mem.c (diagnose_tm_1): Handle SSA name function. c-family/ * cilk.c (cilk_gimplify_call_params_in_spawned_fn): Do not allow call args to gimplify to SSA names. * gcc.dg/pr30172-1.c: Adjust. * gcc.dg/pr63743.c: Likewise. * gcc.dg/tm/pr51696.c: Likewise. * c-c++-common/tm/safe-1.c: Likewise. * gcc.dg/tree-prof/val-prof-3.c: Likewise. * gcc.dg/plugin/self-assign-test-1.c: XFAIL case that needs CSE. * g++.dg/plugin/self-assign-test-1.C: Likewise. * g++.dg/plugin/self-assign-test-2.C: Likewise. From-SVN: r235817
2016-05-03re PR rtl-optimization/70467 (Useless "and [esp],-1" emitted on AND with ↵Jakub Jelinek7-5/+107
uint64_t variable) PR rtl-optimization/70467 * config/i386/predicates.md (x86_64_hilo_int_operand, x86_64_hilo_general_operand): New predicates. * config/i386/constraints.md (Wd): New constraint. * config/i386/i386.md (mode attr di): Use Wd instead of e. (general_hilo_operand): New mode attr. (add<mode>3, sub<mode>3): Use <general_hilo_operand> instead of <general_operand>. (*add<dwi>3_doubleword, *sub<dwi>3_doubleword): Use x86_64_hilo_general_operand instead of <general_operand>. * gcc.target/i386/pr70467-3.c: New test. * gcc.target/i386/pr70467-4.c: New test. Co-Authored-By: Uros Bizjak <ubizjak@gmail.com> From-SVN: r235816
2016-05-03re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on ↵Jakub Jelinek2-24/+9
x86_64-linux-gnu in "tree_operand_check") PR tree-optimization/70916 * tree-if-conv.c (constant_or_ssa_name): Removed. (fold_build_cond_expr): Use is_gimple_val instead of constant_or_ssa_name. From-SVN: r235815
2016-05-03re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on ↵Jakub Jelinek4-1/+38
x86_64-linux-gnu in "tree_operand_check") PR tree-optimization/70916 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Give up if COND_EXPR rhs1 is neither SSA_NAME nor COMPARISON_CLASS_P. * gcc.c-torture/compile/pr70916.c: New test. From-SVN: r235814
2016-05-03re PR target/49244 (__sync or __atomic builtins will not emit 'lock ↵Jakub Jelinek12-0/+876
bts/btr/btc') PR target/49244 * tree-ssa-ccp.c: Include stor-layout.h and optabs-query.h. (optimize_atomic_bit_test_and): New function. (pass_fold_builtins::execute): Use it. * optabs.def (atomic_bit_test_and_set_optab, atomic_bit_test_and_complement_optab, atomic_bit_test_and_reset_optab): New optabs. * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_BIT_TEST_AND_RESET): New ifns. * builtins.h (expand_ifn_atomic_bit_test_and): New prototype. * builtins.c (expand_ifn_atomic_bit_test_and): New function. * internal-fn.c (expand_ATOMIC_BIT_TEST_AND_SET, expand_ATOMIC_BIT_TEST_AND_COMPLEMENT, expand_ATOMIC_BIT_TEST_AND_RESET): New functions. * doc/md.texi (atomic_bit_test_and_set@var{mode}, atomic_bit_test_and_complement@var{mode}, atomic_bit_test_and_reset@var{mode}): Document. * config/i386/sync.md (atomic_bit_test_and_set<mode>, atomic_bit_test_and_complement<mode>, atomic_bit_test_and_reset<mode>): New expanders. (atomic_bit_test_and_set<mode>_1, atomic_bit_test_and_complement<mode>_1, atomic_bit_test_and_reset<mode>_1): New insns. * gcc.target/i386/pr49244-1.c: New test. * gcc.target/i386/pr49244-2.c: New test. From-SVN: r235813