- 13 Nov, 2018 34 commits
-
-
* tree-vrp.c (value_range_base::dump): Dump type. Do not use INF nomenclature for 1-bit types. (dump_value_range): Group all variants to common dumping code. (debug): New overloaded functions for value_ranges. (value_range_base::dump): Remove no argument version. (value_range::dump): Same. testsuite/ * gcc.dg/tree-ssa/pr64130.c: Adjust for new value_range pretty printer. * gcc.dg/tree-ssa/vrp92.c: Same. From-SVN: r266077
Aldy Hernandez committed -
2018-11-13 Martin Liska <mliska@suse.cz> * gcc.target/i386/pr87930.c: Move to ... * gcc.dg/asan/pr87930.c: ... here. Guard for i?86/x86_64 targets. From-SVN: r266076
Martin Liska committed -
re PR tree-optimization/87931 (ICE in vectorizable_reduction, at tree-vect-loop.c:6193 since r265876) 2018-11-13 Richard Biener <rguenther@suse.de> PR tree-optimization/87931 * tree-vect-loop.c (vect_is_simple_reduction): Restrict nested cycles we support to latch computations vectorizable_reduction handles. * gcc.dg/graphite/pr87931.c: New testcase. From-SVN: r266075
Richard Biener committed -
2018-11-13 Martin Liska <mliska@suse.cz> PR tree-optimization/87885 * cfghooks.c (account_profile_record): Rename to ... (profile_record_check_consistency): ... this. Calculate missing num_mismatched_freq_in. (profile_record_account_profile): New function that calculates time and size of a function. * cfghooks.h (struct profile_record): Remove all tuples. (struct cfg_hooks): Remove after_pass flag. (account_profile_record): Rename to ... (profile_record_check_consistency): ... this. (profile_record_account_profile): New. * cfgrtl.c (rtl_account_profile_record): Remove after_pass flag. * passes.c (check_profile_consistency): Do only checking. (account_profile): Calculate size and time of function only. (pass_manager::dump_profile_report): Reformat output. (execute_one_ipa_transform_pass): Call consistency check before clean upand call account_profile after a clean up is done. (execute_one_pass): Call check_profile_consistency and account_profile instead of using after_pass flag.. * tree-cfg.c (gimple_account_profile_record): Likewise. From-SVN: r266074
Martin Liska committed -
2018-11-13 Martin Liska <mliska@suse.cz> PR sanitizer/87930 * config/i386/i386.c (ix86_option_override_internal): Error about usage -mabi=ms and -fsanitize={,kernel-}address. 2018-11-13 Martin Liska <mliska@suse.cz> PR sanitizer/87930 * gcc.target/i386/pr87930.c: New test. From-SVN: r266073
Martin Liska committed -
This patch enables targets to describe DR_TARGET_ALIGNMENT as a compile-time variable. It does so by turning the variable into a 'poly_uint64'. gcc/ChangeLog: 2018-11-13 Andre Vieira <andre.simoesdiasvieira@arm.com> * config/aarch64/aarch64.c (aarch64_vectorize_preferred_vector_alignment): Change return type to poly_uint64. (aarch64_simd_vector_alignment_reachable): Adapt to preferred vector alignment being a poly int. * doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change return type to poly_uint64. * target.def (default_preferred_vector_alignment): Likewise. * targhooks.c (default_preferred_vector_alignment): Likewise. * targhooks.h (default_preferred_vector_alignment): Likewise. * tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise. (vect_compute_data_ref_alignment): Adapt to vector alignment being a poly int. (vect_update_misalignment_for_peel): Likewise. (vect_enhance_data_refs_alignment): Likewise. (vect_find_same_alignment_drs): Likewise. (vect_duplicate_ssa_name_ptr_info): Likewise. (vect_setup_realignment): Likewise. (vect_can_force_dr_alignment_p): Change alignment parameter type to poly_uint64. * tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a mask with a compile time variable vector alignment. (vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly int. (vect_do_peeling): Exit early if vector alignment is not constant. * tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being a poly int. (vectorizable_store): Likewise. (vectorizable_load): Likweise. * tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a poly_uint64. (vect_known_alignment_in_bytes): Adapt to vector alignment being a poly int. (vect_can_force_dr_alignment_p): Change alignment parameter type to poly_uint64. From-SVN: r266072
Andre Vieira committed -
2018-11-13 Richard Biener <rguenther@suse.de> PR tree-optimization/87962 * tree-vect-loop.c (vect_is_simple_reduction): More reliably detect outer reduction for disqualifying in-loop uses. * gcc.dg/pr87962.c: New testcase. From-SVN: r266071
Richard Biener committed -
2018-11-13 Richard Biener <rguenther@suse.de> PR tree-optimization/87967 * tree-vect-loop.c (vect_transform_loop): Also copy PHIs for constants for the scalar loop. * g++.dg/opt/pr87967.C: New testcase. From-SVN: r266070
Richard Biener committed -
For -mcmodel=medium we can use toc-relative addressing to access constants placed in read-only data, which is better since they can be merged when in .rodata.cst8. * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude integer constants when -mcmodel=medium. From-SVN: r266069
Alan Modra committed -
Use PROFILE_HOOK to add mcount library calls in each toolchain. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty. * config/arc/elf.h (PROFILE_HOOK): Define. * config/arc/linux.h (PROFILE_HOOK): Likewise. From-SVN: r266068
Claudiu Zissulescu committed -
Avoid emitting lp instruction when in its ZOL body we find a jump table data in text section. One of the reason is the jump tables size can be changed latter on, hence the total ZOL length may be wrongly computed. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (hwloop_optimize): Bailout when detecting a jump table data in the text section. From-SVN: r266067
Claudiu Zissulescu committed -
Our ABI says the blink is pushed first on stack followed by an unknown number of register saves, and finally by fp. Hence we cannot use the EH_RETURN_ADDRESS macro as the stack is not finalized at that moment. The alternative is to use the eh_return pattern and to initialize all the bits after register allocation when the stack layout is finalized. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (arc_eh_return_address_location): Repurpose it to fit the eh_return pattern. * config/arc/arc.md (eh_return): Define. (VUNSPEC_ARC_EH_RETURN): Likewise. * config/arc/arc-protos.h (arc_eh_return_address_location): Match new implementation. * config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it. testsuite/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/builtin_eh.c: New test. From-SVN: r266066
Claudiu Zissulescu committed -
Reimplement how prologue and epilogue is emitted to accomodate enter/leave instructions, as well as improving the size of the existing techinques. The following modifications are added: - millicode thunk calls can be now selected regardless of the optimization level. However they are enabled for size optimizations by default. Also, the millicode optimization is turned off when we compile for long jumps. - the compiler is able to use enter/leave instructions for prologue and epilogue. As these instructions are not ABI compatible we gurad them under a switch (i.e., -mcode-density-frame). When this option is on, the compiler will try emitting enter/leave instructions, if not, then millicode thunk calls (if enabled), and latter the regular push/pop instructions. - The prologue/epilogue is now optimized to use pointer walks, hence improving the chance to have push_s/pop_s instructions emitted. It also tries to combine the stack adjustments with load/store operations. gcc/ xxxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * common/config/arc/arc-common.c (arc_option_optimization_table): Millicode optimization is default on for size optimizations. * config/arc/arc-protos.h (arc_check_multi): New function. * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange. (ENTER_LEAVE_START_REG): Define. (ENTER_LEAVE_END_REG): Likewise. (arc_override_options): Disable millicode when long calls option is on. (arc_frame_info): Change it from int to bool. (arc_compute_frame_size): Clean up. (arc_save_restore): Remove. (frame_save_reg): New function. (frame_restore_reg): Likewise. (arc_enter_leave_p): Likewise. (arc_save_callee_saves): Likewise. (arc_restore_callee_saves): Likewise. (arc_save_callee_enter): Likewise. (arc_restore_callee_leave): Likewise. (arc_save_callee_milli): Likewise. (arc_restore_callee_milli): Likewise. (arc_expand_prologue): Reimplement to emit enter/leave instructions. (arc_expand_epilogue): Likewise. (arc_check_multi): New function. * config/arc/arc.md (push_multi_fp): New pattern. (push_multi_fp_blink): Likewise. (pop_multi_fp): Likewise. (pop_multi_fp_blink): Likewise. (pop_multi_fp_ret): Likewise. (pop_multi_fp_blink_ret): Likewise. * config/arc/arc.opt (mmillicode): Update option. (mcode-density-frame): New option. * config/arc/predicates.md (push_multi_operand): New predicate. (pop_multi_operand): Likewise. * doc/invoke.texi (ARC): Update ARC options information. gcc/testsuite xxxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/firq-1.c: Update test. * gcc.target/arc/firq-3.c: Likewise. * gcc.target/arc/firq-4.c: Likewise. * gcc.target/arc/interrupt-6.c: Likewise. From-SVN: r266065
Claudiu Zissulescu committed -
Simple peephole rules which combines multiple ld/st instructions into 64-bit load/store instructions. It only works for architectures which are having double load/store option on. gcc/ Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-protos.h (gen_operands_ldd_std): Add. * config/arc/arc.c (operands_ok_ldd_std): New function. (mem_ok_for_ldd_std): Likewise. (gen_operands_ldd_std): Likewise. * config/arc/arc.md: Add peephole2 rules for std/ldd. From-SVN: r266064
Claudiu Zissulescu committed -
* toplev.c (output_stack_usage): Turn test on flag_stack_usage into test on stack_usage_file. (lang_dependent_init): Do not open the .su file if generating LTO. From-SVN: r266063
Eric Botcazou committed -
re PR rtl-optimization/87918 (ICE in simplify_binary_operation, at simplify-rtx.c:2153 since r264688) PR rtl-optimization/87918 * simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use simplify_gen_relational rather than simplify_gen_binary. * gcc.target/i386/pr87918.c: New test. From-SVN: r266062
Jakub Jelinek committed -
2018-11-13 Richard Biener <rguenther@suse.de> * tree-ssanames.h (set_range_info): Use value_range_base. (get_range_info): Likewise. * tree-ssanames.c (set_range_info): Likewise. (get_range_info): Likewise. * tree-vrp.c (value_range_base::union_helper): Split out common parts of value_range[_base]::union_. (value_range_base::union_): Update. (value_range::union_): Likewise. (determine_value_range_1): Use value_range_base. (determine_value_range): Likewise. * tree-vrp.h (value_range_base::union_helper): Move ... (value_range::union_helper): ... from here. From-SVN: r266061
Richard Biener committed -
2018-11-13 Xianmiao Qu <xianmiao_qu@c-sky.com> libgcc/ * config/csky/linux-unwind.h (_sig_ucontext_t): Remove. (csky_fallback_frame_state): Modify the check of the instructions to adapt to changes in the kernel From-SVN: r266060
Xianmiao Qu committed -
* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions for the runtime on platforms where System.Machine_Overflow is true. From-SVN: r266057
Eric Botcazou committed -
When lambdas were added in C++11 they were banned from unevaluated contexts as a way to avoid needing to deal with them in mangling or SFINAE. This proposal avoids that with a more narrow proposal: lambdas never compare as equivalent (so we don't need to mangle them), and substitution failures within a lambda are hard errors. Lambdas appearing in places that types couldn't previously have been declared introduces various complications; in particular, it seems likely to mean types with no linkage being used more broadly, risking ODR violations. I want to follow up this patch with some related diagnostics. * decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR. * mangle.c (write_expression): Handle LAMBDA_EXPR. * parser.c (cp_parser_lambda_expression): Allow lambdas in unevaluated context. Start the tentative firewall sooner. (cp_parser_lambda_body): Use cp_evaluated. * pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR. (tsubst_function_decl): Substitute a lambda even if it isn't dependent. (tsubst_lambda_expr): Use cp_evaluated. Always complain. (tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial. * semantics.c (begin_class_definition): Allow in template parm list. * tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR. (cp_tree_equal): Handle LAMBDA_EXPR. From-SVN: r266056
Jason Merrill committed -
Previously, when we got a function template with explicit arguments for all of the template parameters, we still did "deduction", which of course couldn't deduce anything, but did other deduction-time checking of non-dependent conversions and such. This broke down with the unevaluated lambdas patch (to follow): substituting into the lambda multiple times, once to get the function type for deduction and then again to generate the actual decl, doesn't work, since different substitutions of a lambda produce different types. I believe that skipping the initial substitution when we have all the arguments is still conformant, and produces better diagnostics for some testcases. * pt.c (fn_type_unification): If we have a full set of explicit arguments, go straight to substitution. From-SVN: r266055
Jason Merrill committed -
* decl2.c (min_vis_expr_r, expr_visibility): New. We weren't properly constraining visibility based on names that appear in the mangled representation of expressions. This was made more obvious by the upcoming unevaluated lambdas patch. (min_vis_r): Call expr_visibility. (constrain_visibility_for_template): Likewise. From-SVN: r266054
Jason Merrill committed -
A destroying operator delete takes responsibility for calling the destructor for the object it is deleting; this is intended to be useful for sized delete of a class allocated with a trailing buffer, where the compiler can't know the size of the allocation, and so would pass the wrong size to the non-destroying sized operator delete. gcc/c-family/ * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_impl_destroying_delete. gcc/cp/ * call.c (std_destroying_delete_t_p, destroying_delete_p): New. (aligned_deallocation_fn_p, usual_deallocation_fn_p): Use destroying_delete_p. (build_op_delete_call): Handle destroying delete. * decl2.c (coerce_delete_type): Handle destroying delete. * init.c (build_delete): Don't call dtor with destroying delete. * optimize.c (build_delete_destructor_body): Likewise. libstdc++-v3/ * libsupc++/new (std::destroying_delete_t): New. From-SVN: r266053
Jason Merrill committed -
Mostly this was straightforward; the tricky bit was finding, in the instantiation, the set of capture proxies built when instantiating the init-capture. The comment in lookup_init_capture_pack goes into detail. * parser.c (cp_parser_lambda_introducer): Parse pack init-capture. * pt.c (tsubst_pack_expansion): Handle init-capture packs. (lookup_init_capture_pack): New. (tsubst_expr) [DECL_EXPR]: Use it. (tsubst_lambda_expr): Remember field pack expansions for init-captures. From-SVN: r266052
Jason Merrill committed -
* cp-tree.h (struct cp_evaluated): New. This patch simplifies the saving/clearing/restoring of cp_unevaluated_operand and c_inhibit_evaluation_warnings in the presence of mid-block returns. * init.c (get_nsdmi): Use it. * parser.c (cp_parser_enclosed_template_argument_list): Use it. * pt.c (coerce_template_parms, tsubst_aggr_type): Use it. From-SVN: r266051
Jason Merrill committed -
People objected to the old macro name as unclear, so it was changed. * c-cppbuiltin.c (c_cpp_builtins): Change __cpp_explicit_bool to __cpp_conditional_explicit. From-SVN: r266050
Jason Merrill committed -
This patch removes a call only necessary when using reload. It also corrects a PRE_DEC address offset. * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate offset for PRE_DEC. (rs6000_secondary_reload_gpr): Don't call find_replacement. From-SVN: r266049
Alan Modra committed -
re PR middle-end/59634 (Documentation (info/man page): lack of information for cache size parameters (--param)) 2018-11-13 Sandra Loosemore <sandra@codesourcery.com> PR middle-end/59634 gcc/ * doc/invoke.texi (Optimize Options): Clarify that the l1-cache-line-size, l1-cache-size, and l2-cache-size parameters apply to data cache size. From-SVN: r266048
Sandra Loosemore committed -
* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix. From-SVN: r266047
Alan Modra committed -
The testcase exercises one of the rotate patterns. gcc/ * config/rs6000/predicates.md (logical_const_operand), (logical_operand): Correct comment. gcc/testsuite/ * gcc.target/powerpc/rotmask.c: New. From-SVN: r266046
Alan Modra committed -
* config/rs6000/rs6000.md (addsi3_high): Prefix with '*'. From-SVN: r266045
Alan Modra committed -
This catches a few places where move insn patterns don't slightly disparage CTR, LR and VRSAVE regs. Also fixes the doc for the rs6000 h constraint, and removes an r->cl alternative covered by r->h. * gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint description. * config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case covered by alternative. (movcc_internal1): Ignore h for register preference. (mov<mode>_hardfloat64): Likewise. (mov<mode>_softfloat): Ignore c, l, h for register preference. From-SVN: r266044
Alan Modra committed -
2018-11-12 Sandra Loosemore <sandra@codesourcery.com> PR preprocessor/47823 gcc/ * doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once documentation to... (Pragmas): ...here. * doc/extend.texi (Pragmas): Note additional pragmas documented in the CPP manual. From-SVN: r266043
Sandra Loosemore committed -
From-SVN: r266042
GCC Administrator committed
-
- 12 Nov, 2018 6 commits
-
-
gcc/ChangeLog: 2018-11-13 Kugan Vivekanandarajah <kuganv@linaro.org> PR middle-end/86677 PR middle-end/87528 * tree-scalar-evolution.c (expression_expensive_p): Make BUILTIN POPCOUNT as expensive when backend does not define it. gcc/testsuite/ChangeLog: 2018-11-13 Kugan Vivekanandarajah <kuganv@linaro.org> PR middle-end/86677 PR middle-end/87528 * g++.dg/tree-ssa/pr86544.C: Run only for target supporting popcount pattern. * gcc.dg/tree-ssa/popcount.c: Likewise. * gcc.dg/tree-ssa/popcount2.c: Likewise. * gcc.dg/tree-ssa/popcount3.c: Likewise. * gcc.target/aarch64/popcount4.c: New test. * lib/target-supports.exp (check_effective_target_popcountl): New. From-SVN: r266039
Kugan Vivekanandarajah committed -
The Linux kernel requires and emulates LL and SC for the R5900 too. The special --without-llsc default for the R5900 is therefore not applicable in that case. Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org> 2018-11-12 Fredrik Noring <noring@nocrew.org> gcc/ * config.gcc: Update with-llsc defaults for MIPS r5900. From-SVN: r266038
Fredrik Noring committed -
2018-11-12 Martin Liska <mliska@suse.cz> PR gcov-profile/87442 * common.opt: Add -fprofile-filter-files and -fprofile-exclude-files options. * doc/invoke.texi: Document them. * tree-profile.c (parse_profile_filter): New. (parse_profile_file_filtering): Likewise. (release_profile_file_filtering): Likewise. (include_source_file_for_profile): Likewise. (tree_profiling): Filter source files based on the newly added options. 2018-11-12 Martin Liska <mliska@suse.cz> PR gcov-profile/87442 * gcc.dg/profile-filtering-1.c: New test. * gcc.dg/profile-filtering-2.c: New test. From-SVN: r266037
Martin Liska committed -
2018-11-12 Martin Liska <mliska@suse.cz> PR target/87903 * doc/extend.texi: Add missing values for __builtin_cpu_is and __builtin_cpu_supports for x86 target. From-SVN: r266036
Martin Liska committed -
2018-11-12 Sandra Loosemore <sandra@codesourcery.com> PR middle-end/21110 gcc/ * doc/rtl.texi (Constants): Clarify that mode of "high" doesn't have to be Pmode. (Arithmetic): Likewise for "lo_sum". From-SVN: r266035
Sandra Loosemore committed -
gcc/testsuite/ChangeLog: * gcc.dg/Wattribute-alias.c: Require ifunc support. From-SVN: r266034
Martin Sebor committed
-