aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-10-04jit: implement gcc_jit_context_new_rvalue_from_vectorDavid Malcolm18-521/+1231
This patch implements a new API entrypoint: /* Build a vector rvalue from an array of elements. "vec_type" should be a vector type, created using gcc_jit_type_get_vector. This API entrypoint was added in LIBGCCJIT_ABI_10; you can test for its presence using #ifdef LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector */ extern gcc_jit_rvalue * gcc_jit_context_new_rvalue_from_vector (gcc_jit_context *ctxt, gcc_jit_location *loc, gcc_jit_type *vec_type, size_t num_elements, gcc_jit_rvalue **elements); gcc/jit/ChangeLog: * docs/cp/topics/expressions.rst (Vector expressions): New section. * docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag. * docs/topics/expressions.rst (Vector expressions): New section. * docs/topics/types.rst (gcc_jit_type_get_vector): Add link to gcc_jit_context_new_rvalue_from_vector. * jit-common.h (gcc::jit:recording::vector_type): New forward decl. * jit-playback.c (gcc::jit::playback::context::new_rvalue_from_vector): New method. * jit-playback.h (gcc::jit::playback::context::new_rvalue_from_vector): New method. * jit-recording.c: In namespace gcc::jit:: (class comma_separated_string): New class. (comma_separated_string::comma_separated_string): New ctor, adapted from recording::call::make_debug_string. (comma_separated_string::~comma_separated_string): New dtor. In namespace gcc::jit::recording:: (context::new_rvalue_from_vector): New method. (type::get_vector): Update for renaming of memento_of_get_vector. (class memento_of_get_vector): Rename to... (class vector_type): ..this. (memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector): New ctor. (memento_of_new_rvalue_from_vector::replay_into): New method. (memento_of_new_rvalue_from_vector::visit_children): New method. (memento_of_new_rvalue_from_vector::make_debug_string): New method. (memento_of_new_rvalue_from_vector::write_reproducer): New method. (call::make_debug_string): Split out arg-printing code into ctor for comma_separated_string. * jit-recording.h: In namespace gcc::jit::recording:: (context::new_rvalue_from_vector): New method. (type::dyn_cast_vector_type): New virtual function. (class memento_of_get_vector): Rename to... (class vector_type): ...this. (vector_type::unqualified): Remove this vfunc override in favor of... (vector_type::get_element_type): ...this new method. (vector_type::get_num_units): New method. (vector_type::dyn_cast_vector_type): New vfunc override. (class memento_of_new_rvalue_from_vector): New class. * libgccjit++.h (gccjit::context::new_rvalue): Add overload for vector of rvalue. * libgccjit.c (gcc_jit_context_new_binary_op): Strip off type qualifications when checking that both operands have same type. (gcc_jit_context_new_rvalue_from_vector): New API entrypoint. * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New macro. (gcc_jit_context_new_rvalue_from_vector): New API entrypoint. * libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag. gcc/testsuite/ChangeLog: * jit.dg/test-expressions.c (make_test_of_vectors): New function. (create_code): Call it. * jit.dg/test-vector-rvalues.cc: New test case. From-SVN: r253409
2017-10-04New target check: vect_peeling_profitableAndreas Krebbel5-1/+39
gcc/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * doc/sourcebuild.texi: Document vect_peeling_profitable. gcc/testsuite/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * g++.dg/vect/slp-pr56812.cc: xfail for targets which don't want vector loop peeling. * lib/target-supports.exp (check_effective_target_vect_peeling_profitable): New proc. From-SVN: r253407
2017-10-04New target check for double<->int conversionsAndreas Krebbel9-5/+95
gcc/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * doc/sourcebuild.texi: Document vect_intdouble_cvt and vect_doubleint_cvt. gcc/testsuite/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gcc.dg/vect/pr66251.c: Replace vect_floatint_cvt with vect_doubleint_cvt and vect_intfloat_cvt with vect_intdouble_cvt. * gcc.dg/vect/vect-floatint-conversion-2.c: Replace vect_floatint_cvt with vect_doubleint_cvt. * gcc.dg/vect/vect-intfloat-conversion-3.c: Replace vect_intfloat_cvt with vect_intdouble_cvt. * gfortran.dg/vect/pr60510.f: Require vect_intdouble_cvt. * gfortran.dg/vect/vect-8.f90: Make number of vectorized loops depend on vect_intdouble_cvt. * lib/target-supports.exp (check_effective_target_vect_doubleint_cvt) (check_effective_target_vect_intdouble_cvt): New procs. From-SVN: r253406
2017-10-04New target check: vect_long_multAndreas Krebbel5-1/+39
We don't have a 64 bit vector integer multiply on z. Add a specific check for that. gcc/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * doc/sourcebuild.texi: Document vect_long_mult. gcc/testsuite/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gcc.dg/vect/pr60656.c: Check vect_long_mult. * lib/target-supports.exp (check_effective_target_vect_long_mult): New proc. From-SVN: r253405
2017-10-04Testcases using dg-options require at least -mzarch.Andreas Krebbel3-0/+7
Testcases which override the vect default options using dg-options need at least -mzarch on S/390 32 bit. gcc/testsuite/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gfortran.dg/vect/fast-math-mgrid-resid.f: Use -mzarch on S/390. * gfortran.dg/vect/pr77848.f: Likewise. From-SVN: r253404
2017-10-04Enable vect_float with S/390 VXE and adjust testcasesAndreas Krebbel18-3/+42
The target supports routines provide vect_double and vect_float but these do not appear to be used consequently in the vect testcases. With z13 we only have support for vector double but with z14 also for vector float. This patch adds vect_float to the testcases using the float data type and make the vect_float target check to return 1 only on z14. gcc/testsuite/ChangeLog: 2017-10-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * lib/target-supports.exp (check_effective_target_vect_float): Return 1 being on a S/390 with VXE. * gcc.dg/vect/pr31699.c: Require vec_float. * gcc.dg/vect/pr61194.c: Likewise. * gcc.dg/vect/pr65947-10.c: Likewise. * gcc.dg/vect/pr66142.c: Likewise. * gcc.dg/vect/slp-10.c: Likewise. * gcc.dg/vect/slp-11c.c: Likewise. * gcc.dg/vect/slp-12b.c: Likewise. * gcc.dg/vect/slp-18.c: Likewise. * gcc.dg/vect/slp-33.c: Likewise. * gcc.dg/vect/slp-cond-2-big-array.c: Likewise. * gcc.dg/vect/slp-cond-2.c: Likewise. * gcc.dg/vect/vect-cond-10.c: Likewise. * gcc.dg/vect/vect-cond-8.c: Likewise. * gcc.dg/vect/vect-cond-9.c: Likewise. * gcc.dg/vect/vect-float-extend-1.c: Likewise. * gcc.dg/vect/vect-float-truncate-1.c: Likewise. From-SVN: r253403
2017-10-04Adjust test cases for attributes propagation changes for OMP outlined regionsThomas Schwinge4-3/+11
PR tree-optimization/82374 * c-c++-common/goacc/kernels-double-reduction-n.c: Adjust for attributes propagation changes for OMP outlined regions. * c-c++-common/goacc/kernels-double-reduction.c: Likewise. * c-c++-common/goacc/kernels-reduction.c: Likewise. From-SVN: r253402
2017-10-04PR82413: Mismatched precisions in build_range_checkRichard Sandiford4-1/+15
build_range_check explicitly allows LOW and HIGH to be a different type from EXP, so we need to use w::to_widest when comparing a value based on HIGH with a value based on EXP's type. 2017-10-04 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR tree-optimization/82413 * fold-const.c (build_range_check): Use widest_int when comparing the maximum ETYPE value with HIGH. gcc/testsuite/ PR tree-optimization/82413 * g++.dg/pr82413.C: New test. From-SVN: r253401
2017-10-04re PR fortran/60458 (Error message on associate: deferred type parameter and ↵Paul Thomas7-4/+171
requires either the pointer or allocatable attribute) 2017-10-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/60458 PR fortran/77296 * resolve.c (resolve_assoc_var): Deferred character type associate names must not receive an integer conatant length. * symbol.c (gfc_is_associate_pointer): Deferred character length functions also require an associate pointer. * trans-decl.c (gfc_get_symbol_decl): Deferred character length functions or derived type components require the assoc name to have variable string length. * trans-stmt.c (trans_associate_var): Set the string length of deferred string length associate names. The address expression is not needed for allocatable, pointer or dummy targets. Change the comment about defered string length targets. 2017-10-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/77296 * gfortran.dg/associate_32.f03 : New test. From-SVN: r253400
2017-10-04Fix PR82396: qsort comparator non-negative on sorted outputWilco Dijkstra3-97/+24
r253236 broke AArch64 bootstrap. Earlier revision r253071 changed scheduling behaviour on AArch64 as autopref scheduling no longer checks the base. This patch fixes the bootstrap failure and cleans up autopref scheduling. The code is greatly simplified. Sort accesses on the offset first, and only if the offsets are the same fall back to other comparisons in rank_for_schedule. This doesn't at all restore the original behaviour since we no longer compare the base address, but it now defines a total sorting order. More work will be required to improve the sorting so that only loads/stores with the same base are affected. gcc/ PR rtl-optimization/82396 * haifa-sched.c (autopref_multipass_init): Simplify initialization. (autopref_rank_data): Simplify sort order. * sched-int.h (autopref_multipass_data_): Remove multi_mem_insn_p, min_offset and max_offset. From-SVN: r253399
2017-10-04re PR c++/78816 ([c++14] Static auto variable usage in generic/variadic ↵Paolo Carlini2-0/+24
lambda fails to compile) 2017-10-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/78816 * g++.dg/cpp1y/lambda-generic-variadic6.C: New. From-SVN: r253397
2017-10-04re PR tree-optimization/82381 (internal compiler error: qsort checking failed)Jakub Jelinek2-39/+46
PR tree-optimization/82381 * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different oeN->rank first. Return 1 or -1 if one op is SSA_NAME and the other is not. From-SVN: r253396
2017-10-04re PR tree-optimization/82374 (#pragma GCC optimize is not applied to ↵Jakub Jelinek4-0/+52
openmp-generated functions) PR tree-optimization/82374 * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES, DECL_FUNCTION_SPECIFIC_OPTIMIZATION, DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from current_function_decl to the new decl. * gcc.dg/gomp/pr82374.c: New test. From-SVN: r253395
2017-10-04id-17.f: For ilp32 allow graphite codegen errors and scan for one.Richard Biener10-3/+31
2017-10-04 Richard Biener <rguenther@suse.de> * gfortran.dg/graphite/id-17.f: For ilp32 allow graphite codegen errors and scan for one. * gfortran.dg/graphite/id-19.f: Likewise. * gfortran.dg/graphite/pr29832.f90: Likewise. * gfortran.dg/graphite/pr42326-1.f90: Likewise. * gfortran.dg/graphite/pr42326.f90: Likewise. * gfortran.dg/graphite/pr68550-2.f90: Likewise. * gfortran.dg/graphite/run-id-2.f90: Likewise. * gfortran.dg/graphite/run-id-3.f90: Likewise. * gfortran.dg/graphite/pr42393-1.f90: Dump graphite. From-SVN: r253394
2017-10-04Daily bump.GCC Administrator1-1/+1
From-SVN: r253393
2017-10-03rs6000-builtin.def (BU_FLOAT128_2_HW): Define new helper macro for IEEE ↵Michael Meissner6-13/+296
float128 hardware built-in functions. [gcc] 2017-10-03 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new helper macro for IEEE float128 hardware built-in functions. (SQRTF128_ODD): Add built-in functions with the round-to-odd semantics. (TRUNCF128_ODD): Likewise. (ADDF128_ODD): Likewise. (SUBF128_ODD): Likewise. (MULF128_ODD): Likewise. (DIVF128_ODD): Likewise. (FMAF128_ODD): Likewise. * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to UNSPEC_TRUNC_ROUND_TO_ODD. (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise. (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit floating point round to odd instructions. (UNSPEC_SUB_ROUND_TO_ODD): Likewise. (UNSPEC_MUL_ROUND_TO_ODD): Likewise. (UNSPEC_DIV_ROUND_TO_ODD): Likewise. (UNSPEC_FMA_ROUND_TO_ODD): Likewise. (UNSPEC_SQRT_ROUND_TO_ODD): Likewise. (trunc<mode>sf2_hw): Change the truncate with round to odd expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. (add<mode>3_odd): Add insns for IEEE 128-bit floating point round to odd hardware instructions. (sub<mode>3_odd): Likewise. (mul<mode>3_odd): Likewise. (div<mode>3_odd): Likewise. (sqrt<mode>2_odd): Likewise. (fma<mode>4_odd): Likewise. (fms<mode>4_odd): Likewise. (nfma<mode>4_odd): Likewise. (nfms<mode>4_odd): Likewise. (trunc<mode>df2_odd): Change the truncate with round to odd expansion to use UNSPEC_TRUNC_ROUND_TO_ODD. Add a generator function. * doc/extend.texi (PowerPC built-in functions): Update documentation for existing IEEE float128-bit built-in functions. Add built-in functions that generate the IEEE 128-bit floating point round to odd instructions. [gcc/testsuite] 2017-10-03 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/float128-odd.c: New test. From-SVN: r253389
2017-10-03re PR c++/70343 (internal compiler error: in tsubst_copy, wrong code with ↵Paolo Carlini2-0/+29
lambda in template fn) 2017-10-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/70343 * g++.dg/cpp0x/lambda/lambda-70343.C: New. From-SVN: r253388
2017-10-03re PR target/82358 (i386/stack-check-11.c fail)Jeff Law2-1/+6
PR target/82358 * gcc.target/i386/stack-check-11.c: Use -mtune=generic. From-SVN: r253385
2017-10-03simplify-rtx: Remove non-simplifying simplification (PR77729)Segher Boessenkool2-25/+6
If we have (X&C1)|C2 simplify_binary_operation_1 makes C1 as small as possible. This makes worse code in common cases like when the AND with C1 is from a zero-extension. This patch fixes it by removing this transformation (twice). PR rtl-optimization/77729 * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2 to (X&(C1&~C2))|C2 transformations. From-SVN: r253384
2017-10-03[BRIGFE] Fix (more) crash with calls with more than 4 args.Henry Linjamäki2-1/+7
It missed a reference which is required because vector expansion can move the object to another location. From-SVN: r253382
2017-10-03io.c (match_wait_element): Correctly match END and EOR tags.Thomas Koenig3-2/+42
2017-10-03 Thomas Koenig <tkoenig@gcc.gnu.org> * io.c (match_wait_element): Correctly match END and EOR tags. * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT. From-SVN: r253381
2017-10-03[PR 82363] Fix thinko in SRA subaccess propagationMartin Jambor4-1/+62
2017-10-03 Martin Jambor <mjambor@suse.cz> PR tree-optimization/82363 * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable mismatch, mark lacc written regardless of racc. testsuite/ * gcc.dg/tree-ssa/pr82363.c: New test. From-SVN: r253380
2017-10-03re PR tree-optimization/82381 (internal compiler error: qsort checking failed)Jakub Jelinek4-19/+47
PR tree-optimization/82381 * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check stmt_to_insert nor wheather SSA_NAMEs are default defs. Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal, fallthrough into reassoc_stmt_dominates_stmt_p. * gcc.c-torture/compile/pr82381.c: New test. From-SVN: r253379
2017-10-03re PR target/82386 (internal compiler error: Segmentation fault on 32-bit ↵Jakub Jelinek4-0/+55
powerpc BE targets) PR target/82386 * combine.c (combine_instructions): Don't combine in unreachable basic blocks. * gcc.dg/pr82386.c: New test. From-SVN: r253378
2017-10-03Daily bump.GCC Administrator1-1/+1
From-SVN: r253376
2017-10-02re PR c++/70570 (Assembler error "symbol already defined" from nested ↵Paolo Carlini2-0/+21
lambdas and function-static variable) 2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/70570 * g++.dg/cpp1y/lambda-generic-70570.C: New. From-SVN: r253370
2017-10-02re PR c++/79590 (ICE (internal compiler error) in nothrow_spec_p with ↵Paolo Carlini2-0/+15
generic lambda and `noexcept(noexcept(...))` expression) 2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/79590 * g++.dg/cpp1y/lambda-generic-noexcept1.C: New. From-SVN: r253369
2017-10-02re PR c++/79005 (Use of a captured variable within nested generic lambdas ↵Paolo Carlini2-0/+26
provokes internal compiler error.) 2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/79005 * g++.dg/cpp1y/lambda-generic-79005.C: New. From-SVN: r253368
2017-10-02re PR ada/82384 (s-taprop.adb failed to compile for x32)Eric Botcazou3-6/+15
PR ada/82384 * libgnarl/s-linux__x32.ads (suseconds_t): New subtype. (time_t): Change from derived type to subtype. (timeval): Use suseconds_t for tv_usec. * libgnarl/s-osinte__x32.adb (To_Timespec): Remove use type clause. From-SVN: r253366
2017-10-02re PR fortran/82312 ([OOP] Pointer assignment to component of class variable ↵Paul Thomas5-28/+136
results wrong vptr for the variable.) 2017-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/82312 * resolve.c (gfc_resolve_code): Simplify condition for class pointer assignments becoming regular assignments by asserting that only class valued targets are permitted. * trans-expr.c (trans_class_pointer_fcn): New function using a block of code from gfc_trans_pointer_assignment. (gfc_trans_pointer_assignment): Call the new function. Tidy up a minor whitespace issue. 2017-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/82312 * gfortran.dg/typebound_proc_36.f90 : New test. From-SVN: r253362
2017-10-02re PR target/80210 (ICE in in extract_insn, at recog.c:2311 on ppc64 for ↵Peter Bergner5-88/+87
with __builtin_pow) gcc/ PR target/80210 * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite function to not use the have_cpu variable. Do not set cpu_index, rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT or the default cpu. (rs6000_valid_attribute_p): Remove duplicate initializations of old_optimize and func_optimize. (rs6000_pragma_target_parse): Call rs6000_activate_target_options (). (rs6000_activate_target_options): Make global. * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add prototype. gcc/testsuite/ PR target/80210 * gcc.target/powerpc/pr80210-2.c: New test. From-SVN: r253358
2017-10-02tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1 if *poffset + ↵Jakub Jelinek4-1/+36
*pmax_size overflows in HOST_WIDE_INT. * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1 if *poffset + *pmax_size overflows in HOST_WIDE_INT. Set *poffset to 0 and *psize and *pmax_size to -1 if *poffset + *psize overflows in HOST_WIDE_INT. * gcc.dg/pr82389.c: New test. From-SVN: r253357
2017-10-02re PR tree-optimization/82387 (wrong code at -O1 and -Os on x86_64-linux-gnu ↵Jakub Jelinek6-2/+76
in 64-bit mode) PR tree-optimization/82387 PR tree-optimization/82388 PR tree-optimization/82389 * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled instead of live_bytes non-NULL. * gcc.c-torture/compile/pr82389.c: New test. * gcc.c-torture/execute/pr82387.c: New test. * gcc.c-torture/execute/pr82388.c: New test. From-SVN: r253356
2017-10-02re PR c++/79180 (Nested lambda-capture causes segfault for parameter pack)Paolo Carlini4-0/+89
2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/79180 * g++.dg/cpp0x/lambda/lambda-nested8.C: New. * g++.dg/torture/pr79180.C: Likewise. PR c++/71386 * g++.dg/cpp1y/lambda-generic-nested1.C: New. From-SVN: r253350
2017-10-02re PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)Georg-Johann Lay2-3/+9
PR target/41076 * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0" alternative. From-SVN: r253343
2017-10-02graphite-isl-ast-to-gimple.c (set_codegen_error): With -fchecking and ↵Richard Biener20-14/+83
--param graphite-allow-codegen-errors=0 ICE. 2017-10-02 Richard Biener <rguenther@suse.de> * graphite-isl-ast-to-gimple.c (set_codegen_error): With -fchecking and --param graphite-allow-codegen-errors=0 ICE. * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param. * gcc.dg/graphite/graphite.exp: Add -fdump-tree-graphite-details. * gcc.dg/graphite/id-15.c: Adjust for existing codegen errors. * gcc.dg/graphite/id-16.c: Likewise. * gcc.dg/graphite/pr46168.c: Likewise. * gcc.dg/graphite/pr68756.c: Likewise. * gcc.dg/graphite/pr69728.c: Likewise. * gcc.dg/graphite/pr71575-2.c: Likewise. * gcc.dg/graphite/pr77362.c: Likewise. * gcc.dg/graphite/pr81373.c: Likewise. * gcc.dg/graphite/run-id-pr67700-1.c: Likewise. * gfortran.dg/graphite/interchange-1.f: Likewise. * gfortran.dg/graphite/pr29581.f90: Likewise. * gfortran.dg/graphite/pr42334-1.f: Likewise. * gfortran.dg/graphite/pr42393-1.f90: Likewise. * gfortran.dg/graphite/pr42393.f90: Likewise. * gfortran.dg/graphite/pr47019.f: Likewise. From-SVN: r253342
2017-10-02Fix mismatched precisions in tree arithmeticRichard Sandiford11-16/+49
The tree wi:: decompose routine wasn't asserting that the requested precision matched the tree's precision. This could make a difference for unsigned trees that are exactly N HWIs wide and that have the upper bit set, since we then need an extra zero HWI when extending it to wider precisions (as for wi::to_widest). This patch adds the assert and fixes the fallout shown by the testsuite. Go seems to be unaffected. 2017-10-02 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree.h (wi::int_traits <const_tree>::decompose): Assert that the requested precision matches the type's. * calls.c (alloc_max_size): Calculate the new candidate size as a widest_int and use wi::to_widest when comparing it with the current candidate size. * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with zero rather than integer_zero_node. * match.pd: Check for a no-op conversion before using wi::add rather than after. Use tree_to_uhwi when summing small shift counts into an unsigned int. gcc/c-family/ * c-warn.c (warn_tautological_bitwise_comparison): Use wi::to_widest when combining the original unconverted comparison operands. gcc/cp/ * constexpr.c (cxx_eval_store_expression): Use wi::to_widest when comparing the array bounds with an ARRAY_REF index. gcc/ada/ * gcc-interface/decl.c (annotate_value): Use wi::to_widest when handling the form (plus/mult (convert @0) @1). From-SVN: r253341
2017-10-02re PR c++/69977 (internal compiler error: Segmentation fault when using ↵Paolo Carlini2-0/+28
generic lambdas) 2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/69977 * g++.dg/cpp1y/lambda-generic-69977.C: New. From-SVN: r253340
2017-10-02re PR c++/59991 (Recursive lambda capture in C++1y constexpr function ↵Paolo Carlini2-0/+18
template causes internal compiler error) 2017-10-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/59991 * g++.dg/cpp0x/lambda/lambda-ice23.C: New. From-SVN: r253339
2017-10-02Require nonlocal_goto for gcc.c-torture/compile/pr82337.cTom de Vries2-0/+7
2017-10-02 Tom de Vries <tom@codesourcery.com> * gcc.c-torture/compile/pr82337.c: Add dg-require-effective-target nonlocal_goto. From-SVN: r253338
2017-10-02[AArch64] PR71307: Define union class of POINTER+FPRichard Sandiford5-2/+22
ALL_REGS doesn't function as a union class of POINTER_REGS and FP_REGS since it includes the CC register as well. REGNO_REG_CLASS (CC_REGNUM) is NO_REGS, but of course NO_REGS rightly doesn't include CC_REGNUM. Adding a union class for POINTER+FP allows the RA to use it as the preferred or alternative class of a pseudo. It also works as a union class of GENERAL+FP for modes that aren't allowed in SP. This is also needed for the SVE port, which adds predicate registers to the mix. 2017-09-15 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ PR target/71307 * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class. (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly. * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle POINTER_AND_FP_REGS. gcc/testsuite/ PR target/71307 * gcc.target/aarch64/vect_copy_lane_1.c: Remove XFAIL. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253337
2017-10-02re PR tree-optimization/82355 (ICE in outermost_loop_in_sese, at sese.c:301)Richard Biener9-35/+88
2017-10-02 Richard Biener <rguenther@suse.de> PR tree-optimization/82355 * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build a mapping for the enclosing loop but avoid generating one for the loop tree root. (copy_bb_and_scalar_dependences): Remove premature codegen error on PHIs in blocks duplicated into multiple places. * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_refs_p): For a loop not in the region use it as loop and nest to analyze the DR in. (try_generate_gimple_bb): Likewise. * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. (add_loop_constraints): For blocks in a loop not in the region create a dimension with a single iteration. * sese.h (gbb_loop_at_index): Remove assert. * gcc.dg/graphite/fuse-1.c: Adjust. * gcc.dg/graphite/fuse-2.c: Likewise. * gcc.dg/graphite/pr82355.c: New testcase. From-SVN: r253336
2017-10-02omp-expand.c (adjust_context_scope): New function.Kevin Buettner2-0/+43
* omp-expand.c (adjust_context_scope): New function. (expand_parallel_call): Call adjust_context_scope. From-SVN: r253335
2017-10-02Daily bump.GCC Administrator1-1/+1
From-SVN: r253334
2017-10-01tree-ssa-dom.c (optimize_stmt): Make this a method within the ↵Jeff Law4-26/+163
dom_opt_dom_walker class with direct access to... * tree-ssa-dom.c (optimize_stmt): Make this a method within the dom_opt_dom_walker class with direct access to private members. Add comments. Call test_for_singularity. (dom_opt_dom_walker::before_dom_children): Corresponding changes. (dom_opt_dom_walker::after_dom_children): Do not lazily initialize m_dummy_cond anymore. (class dom_opt_dom_walker): Initialize m_dummy_cond member in the class ctor. (pass_dominator:execute): Build the dummy_cond here and pass it to the dom_opt_dom_walker ctor. (test_for_singularity): New function. * gcc.dg/tree-ssa/ssa-dom-simplify-1.c: New test. 2017-09-30 Paolo Carlini <paolo.carlini@oracle.com> From-SVN: r253329
2017-10-01re PR fortran/61450 (ICE in gfc_global_used())Dominique d'Humieres4-6/+41
2017-10-01 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/61450 * parse.c (gfc_global_used): Replace the gfc_internal_error with an error. 2017-10-01 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/61450 * gfortran.dg/binding_label_tests_28.f90: New test. From-SVN: r253328
2017-10-01Daily bump.GCC Administrator1-1/+1
From-SVN: r253327
2017-09-30config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing netbsd.h, ↵Krister Walfridsson3-12/+52
netbsd-stdint.h, and netbsd-elf.h. 2017-09-30 Krister Walfridsson <krister.walfridsson@gmail.com> Maya Rashish <coypu@sdf.org> * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing netbsd.h, netbsd-stdint.h, and netbsd-elf.h. (alpha*-*-netbsd*) Use nbsd_tm_file. (arm*-*-netbsdelf*) Likewise. (i[34567]86-*-netbsdelf*) Likewise. (x86_64-*-netbsd*) Likewise. (mips*-*-netbsd*) Likewise. (powerpc-*-netbsd*) Likewise. (sh*-*-netbsd*) Likewise. (sparc-*-netbsdelf*) Likewise. (sparc64-*-netbsd*) Likewise. (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16 to tm_defines. (vax-*-netbsdelf*) Likewise. * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8. (UINT_FAST8_TYPE) Likewise. (INT_FAST16_TYPE) Check CHAR_FAST16. (UINT_FAST16_TYPE) Likewise. Co-Authored-By: Maya Rashish <coypu@sdf.org> From-SVN: r253323
2017-09-30re PR c++/65949 (Compiler can not deduce auto type in lambda)Paolo Carlini2-0/+66
2017-09-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65949 * g++.dg/cpp1y/lambda-generic-variadic5.C: New. From-SVN: r253322
2017-09-30re PR c++/68754 (Explicitly defaulted constexpr assignment operator fails to ↵Paolo Carlini5-10/+24
compile) /cp 2017-09-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/68754 * method.c (defaulted_late_check): Early return if the defaulted declaration does not match the expected signature. /testsuite 2017-09-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/68754 * g++.dg/cpp1y/constexpr-68754.C: Move... * g++.dg/cpp0x/constexpr-68754.C: ... here, adjust. From-SVN: r253321