aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-09-10even more range_of tweaksdevel/ssa-rangeAndrew Macleod3-21/+12
From-SVN: r275590
2019-09-10more grange/parameter cleanupsAndrew Macleod4-124/+24
From-SVN: r275556
2019-09-09range_of_grange tweaksAndrew Macleod2-57/+8
From-SVN: r275519
2019-09-05Move from grange c++ interface to gimple_range accessor interface remove...Andrew Macleod8-385/+233
Move from grange c++ interface to gimple_range accessor interface remove grange_adjust classes and replace with a simple function for now From-SVN: r275410
2019-09-04pull range_of_ssa_nme out of range_of_expr, then combine get_tree_range ↵Andrew Macleod6-104/+120
with range_of_expr From-SVN: r275380
2019-09-04split ssa-ranger into stmt-ranger and cfg related stuff move get_tree_range ↵Andrew Macleod7-363/+349
and have it return a ranger rather than a bool remove range_of_expr for edges... split ssa-ranger into stmt-ranger and cfg related stuff move get_tree_range and have it return a ranger rather than a bool remove range_of_expr for edges, just use range_on_edge From-SVN: r275371
2019-09-04Move gimple_edge code ito grange remove switch cache...Andrew Macleod9-332/+177
Move gimple_edge code ito grange remove switch cache, just calculate each time move ssa_range::valid_ssa_p to valid_range_ssa_p in grange.h From-SVN: r275363
2019-08-27Cleanups to bring branch more in line with trunk.Aldy Hernandez11-238/+153
From-SVN: r274957
2019-08-27Pull in wide_int_binop_overflow into range-op.cc as wi_binop_overflow.Aldy Hernandez1-11/+106
Do not include wide-int-range.h. From-SVN: r274950
2019-08-27New versions of wi_includes_zero_p and wi_zero_p in range-op.cc.Aldy Hernandez1-24/+32
From-SVN: r274949
2019-08-26Inline wide_int_range* into range-op.cc.Aldy Hernandez3-188/+623
From-SVN: r274938
2019-08-23remove old fortrsn boolean hackAndrew Macleod1-5/+0
From-SVN: r274854
2019-08-22Rename all uses of irange to value_range_base in range-op.*.Aldy Hernandez3-555/+736
If using irange in branch set the following define: #define value_range_base irange From-SVN: r274826
2019-08-22Move range self tests to range-op.cc.Aldy Hernandez2-518/+514
From-SVN: r274819
2019-08-22Remove cast() from irange API and implement it in range-ops.Aldy Hernandez9-181/+81
From-SVN: r274818
2019-08-21Minor formatting fixes.Aldy Hernandez3-4/+4
From-SVN: r274812
2019-08-21Make range_operator::wi_fold protected.Aldy Hernandez1-5/+5
From-SVN: r274809
2019-08-21Implement new range-ops API.Aldy Hernandez8-446/+444
From-SVN: r274808
2019-08-19typeless undefineAldy Hernandez11-156/+175
From-SVN: r274674
2019-08-19Rangeops reworkAndrew Macleod8-1105/+1210
From-SVN: r274669
2019-08-18Fix fallout from merge.Aldy Hernandez2-2/+1
Regressions are the same as the last merge on June 27. They are repeated here for the record: Differences from trunk at merge point are: > FAIL: gcc.dg/tree-ssa/rvrp09.c scan-tree-dump-times rvrp "Branch rewritten" 4 Expected. Fails because I have disabled irange_adjust_bit_and_mask() to keep the verification code from tripping. > FAIL: gcc.dg/uninit-pred-6_c.c bogus warning (test for bogus messages, line 25) Expected. Long-standing regression in our branch. Jeff has mentioned he has a work-in-progress to fix this. < XFAIL: gcc.dg/pr80776-1.c (test for bogus messages, line 22) < XFAIL: gcc.dg/Walloca-13.c (test for bogus messages, line 11) < XFAIL: gcc.dg/Walloca-6.c (test for excess errors) Expected. Ranger is smarter than mainline. And finally, the only non-expected regression: > FAIL: gfortran.dg/char_result_14.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) > FAIL: gfortran.dg/char_result_14.f90 -O3 -g (test for excess errors) This is some -Wprintf thing. It may or may not be a bug. I'll look at it: Warning: '__builtin_memset' writing between 1 and 2147483640 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] From-SVN: r274622
2019-08-18Merge branch 'trunk-at-merge' into ranger-mergeAldy Hernandez3162-101684/+216318
From-SVN: r274621
2019-08-16Add type to VR_VARYING.Aldy Hernandez8-89/+221
From-SVN: r274561
2019-08-16require trampolines for pr85044Alexandre Oliva2-0/+3
Testcases that require support for trampolines should be marked as such; gcc.target/i386/pr85044.c was missing it. Fixed. for gcc/testsuite/ChangeLog * gcc.target/i386/pr85044.c: Require support for trampolines. From-SVN: r274560
2019-08-16i386/asm-4 test: use amd64's natural addressing mode on all OSsAlexandre Oliva2-1/+4
gcc.target/i386/asm-4.c uses amd64's natural PC-relative addressing mode on a single platform, using the 32-bit absolute addressing mode elsewhere. There's no point in giving up amd64's natural addressing mode and insisting on the 32-bit one when we're targeting amd64, and having to make explicit exceptions for systems where that's found not to work for whatever reason. If we just use the best-suited way to take the address of a function behind the compiler's back on each target variant, we're less likely to hit unexpected failures. for gcc/testsuite/ChangeLog * gcc.target/i386/asm-4.c: Use amd64 natural addressing mode on all __LP64__ targets. From-SVN: r274559
2019-08-16use __builtin_alloca, drop non-standard alloca.hAlexandre Oliva6-10/+15
Since alloca.h is not ISO C, most of our alloca-using tests seem to rely on __builtin_alloca instead of including the header and calling alloca. This patch extends this practice to some of the exceptions I found in gcc.target, marking them as requiring a functional alloca while at that. for gcc/testsuite/ChangeLog * gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require effective target support for alloca, drop include of alloca.h. * gcc.target/i386/pr80969-3.c: Likewise. * gcc.target/sparc/setjmp-1.c: Likewise. * gcc.target/x86_64/abi/ms-sysv/gen.cc: Likewise. * gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise. From-SVN: r274558
2019-08-16Match ld besides collect2 in gcov testAlexandre Oliva2-1/+7
The regexp that checks that -lgcov is linked in when --coverage is passed to the compiler driver requires the command line to match '/collect2'. Some of our targets don't match that, but they match /ld or ${target_alias}-ld depending on the testing scenario, so I'd like to tweak the test to match those as well. for gcc/testsuite/ChangeLog * gcc.misc-tests/options.exp: Match /ld and -ld besides /collect2. From-SVN: r274557
2019-08-16address changeAlexandre Oliva2-4/+8
Oops, I forgot to update the MAINTAINERS file a couple of months ago, when the address there stopped working. Honestly, I haven't really had much involvement with the frv, mn10300 or sh ports for almost 15 years, so I wouldn't mind if someone else stepped up and took over, but until someone does, I don't mind reviewing the occasional patch, so it's best if it can reach me ;-) for ChangeLog * MAINTAINERS: aoliva from @redhat.com to @gcc.gnu.org. From-SVN: r274556
2019-08-16Daily bump.GCC Administrator1-1/+1
From-SVN: r274555
2019-08-15re PR fortran/91443 (-Wargument-mismatch does not catch mismatch for global ↵Thomas Koenig15-41/+202
procedure) 2019-08-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91443 * frontend-passes.c (check_externals_expr): New function. (check_externals_code): New function. (gfc_check_externals): New function. * gfortran.h (debug): Add prototypes for gfc_symbol * and gfc_expr *. (gfc_check_externals): Add prototype. * interface.c (compare_actual_formal): Do not complain about alternate returns if the formal argument is optional. (gfc_procedure_use): Handle cases when an error has been issued previously. Break long line. * parse.c (gfc_parse_file): Call gfc_check_externals for all external procedures. * resolve.c (resolve_global_procedure): Remove checking of argument list. 2019-08-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91443 * gfortran.dg/argument_checking_19.f90: New test. * gfortran.dg/altreturn_10.f90: Change dg-warning to dg-error. * gfortran.dg/dec_union_11.f90: Add -std=legacy. * gfortran.dg/hollerith8.f90: Likewise. Remove warning for Hollerith constant. * gfortran.dg/integer_exponentiation_2.f90: New subroutine gee_i8; use it to avoid type mismatches. * gfortran.dg/pr41011.f: Add -std=legacy. * gfortran.dg/whole_file_1.f90: Change warnings to errors. * gfortran.dg/whole_file_2.f90: Likewise. From-SVN: r274551
2019-08-15PR c++/90393 - ICE with thow in ?:Jason Merrill8-20/+85
My previous patch for 64372 was incomplete: it only stopped making the non-throw argument into an rvalue, lvalue_kind still considered the ?: expression to be an rvalue, leaving us worse than before. PR c++/64372, DR 1560 - Gratuitous lvalue-to-rvalue conversion in ?: * tree.c (lvalue_kind): Handle throw in one arm. * typeck.c (rationalize_conditional_expr): Likewise. (cp_build_modify_expr): Likewise. From-SVN: r274550
2019-08-15i386: Separate costs of pseudo registers from hard registersH.J. Lu4-537/+835
processor_costs has costs of RTL expressions with pseudo registers and and costs of hard register moves: 1. Costs of RTL expressions are used to generate the most efficient RTL operations with pseudo registers. 2. Costs of hard register moves are used by register allocator to decide how to allocate and move hard registers. Since relative costs of pseudo register load and store versus pseudo register moves in RTL expressions can be different from relative costs of hard registers, we should separate costs of RTL expressions with pseudo registers from costs of hard registers so that register allocator and RTL expressions can be improved independently. This patch moves costs of hard register moves to the new hard_register field and duplicates costs of moves which are also used for costs of RTL expressions. PR target/90878 * config/i386/i386.c (inline_memory_move_cost): Use hard_register for costs of hard register moves. (ix86_register_move_cost): Likewise. * config/i386/i386.h (processor_costs): Move costs of hard register moves to hard_register. Add int_load, int_store, xmm_move, ymm_move, zmm_move, sse_to_integer, integer_to_sse, sse_load, sse_store, sse_unaligned_load and sse_unaligned_store for costs of RTL expressions. * config/i386/x86-tune-costs.h: Move costs of hard register moves to hard_register. Duplicate int_load, int_store, xmm_move, ymm_move, zmm_move, sse_to_integer, integer_to_sse, sse_load, sse_store for costs of RTL expressions. From-SVN: r274543
2019-08-15PR libstdc++/91456 make INVOKE<R> work with uncopyable prvaluesJonathan Wakely5-9/+126
In C++17 a function can return a prvalue of a type that cannot be moved or copied. The current implementation of std::is_invocable_r uses std::is_convertible to test the conversion to R required by INVOKE<R>. That fails for non-copyable prvalues, because std::is_convertible is defined in terms of std::declval which uses std::add_rvalue_reference. In C++17 conversion from R to R involves no copies and so is not the same as conversion from R&& to R. This commit changes std::is_invocable_r to check the conversion without using std::is_convertible. std::function also contains a similar check using std::is_convertible, which can be fixed by simply reusing std::is_invocable_r (but because std::is_invocable_r is not defined for C++11 it uses the underlying std::__is_invocable_impl trait directly). PR libstdc++/91456 * include/bits/std_function.h (__check_func_return_type): Remove. (function::_Callable): Use std::__is_invocable_impl instead of __check_func_return_type. * include/std/type_traits (__is_invocable_impl): Add another defaulted template parameter. Define a separate partial specialization for INVOKE and INVOKE<void>. For INVOKE<R> replace is_convertible check with a check that models delayed temporary materialization. * testsuite/20_util/function/91456.cc: New test. * testsuite/20_util/is_invocable/91456.cc: New test. From-SVN: r274542
2019-08-15Add r274540 to LOCAL_PATCHES.Martin Liska2-0/+5
2019-08-15 Martin Liska <mliska@suse.cz> * LOCAL_PATCHES: Add r274540 From-SVN: r274541
2019-08-15Reapply missing patch for libsanitizer.Martin Liska2-0/+5
2019-08-15 Martin Liska <mliska@suse.cz> * tsan/tsan_rtl_ppc64.S: Reapply. From-SVN: r274540
2019-08-15Remove TARGET_SETUP_INCOMING_VARARG_BOUNDSRichard Sandiford7-62/+10
TARGET_SETUP_INCOMING_VARARG_BOUNDS seems to be an unused vestige of the MPX support. 2019-08-15 Richard Sandiford <richard.sandiford@arm.com> gcc/ * target.def (setup_incoming_vararg_bounds): Remove. * doc/tm.texi.in (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Remove. * doc/tm.texi: Regenerate. * targhooks.c (default_setup_incoming_vararg_bounds): Delete. * targhooks.h (default_setup_incoming_vararg_bounds): Likewise. * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise. (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise. From-SVN: r274539
2019-08-15[libsanitizer] Fix PR bootstrap/91455Iain Sandoe12-977/+519
If a target does not support libbacktrace, it might still the include for $(top_srcdir). Regenerate the built files using automake-1.15.1 libsanitizer/ 2019-08-15 Iain Sandoe <iain@sandoe.co.uk> PR bootstrap/91455 * Makefile.in: Regenerated. * aclocal.m4: Likewise. * asan/Makefile.in: Likewise. * configure: Likewise. * interception/Makefile.in: Likewise. * libbacktrace/Makefile.in: Likewise. * lsan/Makefile.in: Likewise. * sanitizer_common/Makefile.am: Include top_srcdir unconditionally. * sanitizer_common/Makefile.in: Regenerated. * tsan/Makefile.in: Likewise. * ubsan/Makefile.in: Likewise. From-SVN: r274538
2019-08-15MSP430: Fix lines over 80 characters long in config/msp430/*.{c,h} filesJozef Lawrynowicz6-82/+196
2019-08-15 Jozef Lawrynowicz <jozef.l@mittosystems.com> MSP430: Fix lines over 80 characters long in config/msp430/*.{c,h} files * config/msp430/driver-msp430.c (msp430_select_cpu): Fix format specifier in string. (msp430_select_hwmult_lib): Split line more than 80 characters long. * config/msp430/msp430-devices.c (msp430_extract_mcu_data): Remove redundant old comment. * config/msp430/msp430-protos.h (msp430_output_aligned_decl_common): Split line more than 80 characters long. * config/msp430/msp430.c (msp430_option_override): Likewise. (msp430_return_in_memory): Likewise. (msp430_gimplify_va_arg_expr): Likewise. (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise. (msp430_legitimate_constant): Likewise. (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Likewise. (msp430_attr): Likewise. (msp430_data_attr): Likewise. (msp430_start_function): Likewise. (gen_prefix): Likewise. (msp430_init_sections): Likewise. (msp430_select_section): Likewise. (msp430_function_section): Likewise. (msp430_unique_section): Likewise. (msp430_output_aligned_decl_common): Likewise. (msp430_do_not_relax_short_jumps): Likewise. (msp430_init_builtins): Likewise. (msp430_expand_delay_cycles): Likewise. (msp430_expand_prologue): Likewise. (msp430_expand_epilogue): Likewise. (msp430_expand_helper): Likewise. (msp430_split_movsi): Likewise. (msp430_print_operand): Likewise. (msp430_return_addr_rtx): Likewise. (msp430x_extendhisi): Likewise. * config/msp430/msp430.h (STARTFILE_SPEC): Likewise. (ASM_SPEC): Likewise. Remove very obvious comments. (LIB_SPEC): Split line more than 80 characters long. (EH_RETURN_HANDLER_RTX): Likewise. (HARD_REGNO_CALLER_SAVE_MODE): Likewise. From-SVN: r274537
2019-08-15MSP430: Fix whitespace errors and incorrect indentation in ↵Jozef Lawrynowicz5-870/+927
config/msp430/*.{c,h} files 2019-08-15 Jozef Lawrynowicz <jozef.l@mittosystems.com> MSP430: Fix whitespace errors and incorrect indentation in config/msp430/*.{c,h} files * config/msp430/driver-msp430.c (msp430_select_cpu): Fix indentation. (msp430_select_hwmult_lib): Likewise. * config/msp430/msp430-devices.c (parse_devices_csv_1): Likewise. (msp430_extract_mcu_data): Likewise. (struct t_msp430_mcu_data): Likewise. * config/msp430/msp430.c (struct machine_function): Remove whitespace before left square bracket. (msp430_option_override): Fix indentation. (msp430_hard_regno_nregs_with_padding): Likewise. (msp430_initial_elimination_offset): Likewise. (msp430_special_register_convention_p): Remove whitespace before left square bracket and after exclamation mark. (msp430_evaluate_arg): Likewise. (msp430_callee_copies): Fix indentation. (msp430_gimplify_va_arg_expr): Likewise. (msp430_function_arg_advance): Remove whitespace before left square bracket. (reg_ok_for_addr): Likewise. (msp430_preserve_reg_p): Likewise. (msp430_compute_frame_info): Likewise. (msp430_asm_output_addr_const_extra): Add space between function name and open parenthesis. (has_section_name): Fix indentation. (msp430_attr): Remove trailing whitespace. (msp430_section_attr): Likewise. (msp430_data_attr): Likewise. (struct msp430_attribute_table): Fix comment and whitespace. (msp430_start_function): Remove whitespace before left square bracket. Add space between function name and open parenthesis. (msp430_select_section): Remove trailing whitespace. (msp430_section_type_flags): Remove trailing whitespace. (msp430_unique_section): Remove space before closing parenthesis. (msp430_output_aligned_decl_common): Change 8 spaces to a tab. (msp430_builtins): Remove whitespace before left square bracket. (msp430_init_builtins): Fix indentation. (msp430_expand_prologue): Remove whitespace before left square bracket. Remove space before closing parenthesis. (msp430_expand_epilogue): Remove whitespace before left square bracket. (msp430_split_movsi): Remove space before closing parenthesis. (helper_function_name_mappings): Fix indentation. (msp430_use_f5_series_hwmult): Fix whitespace. (use_32bit_hwmult): Likewise. (msp430_no_hwmult): Likewise. (msp430_output_labelref): Remove whitespace before left square bracket. (msp430_print_operand_raw): Likewise. (msp430_print_operand_addr): Likewise. (msp430_print_operand): Add two spaces after '.' in comment. Fix trailing whitespace. (msp430x_extendhisi): Fix indentation. * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Change 8 spaces to tab. (PC_REGNUM): Likewise. (STACK_POINTER_REGNUM): Likewise. (CC_REGNUM): Likewise. From-SVN: r274536
2019-08-15re PR target/91454 (ICE in get_attr_avx_partial_xmm_update, at ↵Richard Biener2-14/+30
config/i386/i386.md:1804 since r274481) 2019-08-15 Richard Biener <rguenther@suse.de> PR target/91454 * config/i386/i386-features.c (gen_gpr_to_xmm_move_src): New helper. (general_scalar_chain::make_vector_copies): Use it. From-SVN: r274535
2019-08-15Implement P0848R3, Conditionally Trivial Special Member Functions.Jason Merrill9-20/+233
With Concepts, overloads of special member functions can differ in constraints, and this paper clarifies how that affects class properties: if a class has a more constrained trivial copy constructor and a less constrained non-trivial copy constructor, it is still trivially copyable. * tree.c (special_memfn_p): New. * class.c (add_method): When overloading, hide ineligible special member fns. (check_methods): Set TYPE_HAS_COMPLEX_* here. * decl.c (grok_special_member_properties): Not here. * name-lookup.c (push_class_level_binding_1): Move overloaded functions case down, accept FUNCTION_DECL as target_decl. From-SVN: r274534
2019-08-15re PR tree-optimization/91445 (After memset, logical && operator produces ↵Richard Biener2-0/+27
false result, optimization level >=O1) 2019-08-15 Richard Biener <rguenther@suse.de> PR tree-optimization/91445 * gcc.dg/torture/pr91445.c: New testcase. From-SVN: r274533
2019-08-15function.c (assign_parm_setup_reg): Handle misaligned stack arguments.Bernd Edlinger2-1/+22
2019-08-15 Bernd Edlinger <bernd.edlinger@hotmail.de> * function.c (assign_parm_setup_reg): Handle misaligned stack arguments. From-SVN: r274531
2019-08-15Clean up dead condition for operators in DCE.Martin Liska2-16/+12
2019-08-15 Martin Liska <mliska@suse.cz> * tree-ssa-dce.c (propagate_necessity): We can't reach now operators with no arguments. (eliminate_unnecessary_stmts): Likewise here. From-SVN: r274529
2019-08-15c-common.c (c_stddef_cpp_builtins): When the GIMPLE FE is enabled, define ↵Richard Biener4-5/+14
__SIZETYPE__. 2019-08-15 Richard Biener <rguenther@suse.de> c-family/ * c-common.c (c_stddef_cpp_builtins): When the GIMPLE FE is enabled, define __SIZETYPE__. * gcc.dg/pr80170.c: Adjust to use __SIZETYPE__. From-SVN: r274528
2019-08-15* config/i386/i386.c (convertible_comparison_p): Fix argument declaration.Uros Bizjak1-1/+1
From-SVN: r274527
2019-08-15i386-features.c (general_scalar_chain::convert_insn): Revert 2019-08-14 change.Uros Bizjak2-12/+23
* config/i386/i386-features.c (general_scalar_chain::convert_insn) <case COMPARE>: Revert 2019-08-14 change. (convertible_comparison_p): Revert 2019-08-14 change. Return false for (TARGET_64BIT || mode != DImode). From-SVN: r274526
2019-08-15Enforce canonicalization in value_range.Aldy Hernandez4-99/+247
From-SVN: r274525
2019-08-15Add missing check for BUILT_IN_MD (PR 91444)Richard Sandiford2-1/+8
In this PR we were passing an ordinary non-built-in function to targetm.vectorize.builtin_md_vectorized_function, which is only supposed to handle BUILT_IN_MD. 2019-08-15 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR middle-end/91444 * tree-vect-stmts.c (vectorizable_call): Check that the function is a BUILT_IN_MD function before passing it to targetm.vectorize.builtin_md_vectorized_function. From-SVN: r274524
2019-08-15[AArch64] Add a aarch64_sve_mode_p queryRichard Sandiford3-6/+17
This patch adds an exported function for testing whether a mode is an SVE mode. The ACLE will make more use of it, but there's already one place that can benefit. 2019-08-15 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64-protos.h (aarch64_sve_mode_p): Declare. * config/aarch64/aarch64.c (aarch64_sve_mode_p): New function. (aarch64_select_early_remat_modes): Use it. From-SVN: r274523