summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Properly handle -fno-plt in ix86_expand_callhjl/pr67215/gcc-5-branchH.J. Lu2015-08-186-29/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | prepare_call_address in calls.c is the wrong place to handle -fno-plt. We shoudn't force function address into register and hope that load function address via GOT and indirect call via register will be folded into indirect call via GOT, which doesn't always happen. Also non-PIC case can only be handled in backend. Instead, backend should expand external function call into indirect call via GOT for -fno-plt. This patch reverts -fno-plt in prepare_call_address and handles it in ix86_expand_call. Other backends may need similar changes to support -fno-plt. Alternately, we can introduce a target hook to indicate whether an external function should be called via register for -fno-plt so that i386 backend can disable it in prepare_call_address. gcc/ PR target/67215 * calls.c (prepare_call_address): Don't handle -fno-plt here. * config/i386/i386.c (ix86_expand_call): Generate indirect call via GOT for -fno-plt. Support indirect call via GOT for x32. * config/i386/predicates.md (sibcall_memory_operand): Allow GOT memory operand. gcc/testsuite/ PR target/67215 * gcc.target/i386/pr67215-1.c: New test. * gcc.target/i386/pr67215-2.c: Likewise. * gcc.target/i386/pr67215-3.c: Likewise.
* Add more tests for PR target/66232hjl2015-08-184-0/+53
| | | | | | | | | | PR target/66232 * gcc.target/i386/pr66232-6.c: New tests. * gcc.target/i386/pr66232-7.c: Likewise. * gcc.target/i386/pr66232-8.c: Likewise. * gcc.target/i386/pr66232-9.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226254 138bc75d-0d04-0410-961f-82ee72b054a4
* Allow indirect sibcall with register argumentshjl2015-08-187-6/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Indirect sibcall with register arguments is OK when there is register available for argument passing. gcc/ PR target/66819 * config/i386/i386.c (ix86_function_ok_for_sibcall): Allow indirect sibcall with register arguments if register available for argument passing. (init_cumulative_args): Set cfun->machine->arg_reg_available to (cum->nregs > 0) or to true if function has a variable argument list. (function_arg_advance_32): Set cfun->machine->arg_reg_available to false if cum->nregs <= 0. * config/i386/i386.h (machine_function): Add arg_reg_available. gcc/testsuite/ PR target/66819 * gcc.target/i386/pr66819-1.c: New test. * gcc.target/i386/pr66819-2.c: Likewise. * gcc.target/i386/pr66819-3.c: Likewise. * gcc.target/i386/pr66819-4.c: Likewise. * gcc.target/i386/pr66819-5.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225688 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.target/i386/noplt-1.c (dg-do): Fix target selector.uros2015-08-184-4/+4
| | | | | | | | * gcc.target/i386/noplt-2.c (dg-do): Ditto. * gcc.target/i386/noplt-3.c (dg-do): Ditto. * gcc.target/i386/noplt-4.c (dg-do): ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224578 138bc75d-0d04-0410-961f-82ee72b054a4
* 2015-06-04 Sriraman Tallam <tmsriram@google.com>tmsriram2015-08-189-5/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * c-family/c-common.c (noplt): New attribute. (handle_noplt_attribute): New handler. * calls.c (prepare_call_address): Check for noplt attribute. * config/i386/i386.c (ix86_expand_call): Check for noplt attribute. (ix86_nopic_noplt_attribute_p): New function. (ix86_output_call_insn): Output indirect call for non-pic no plt calls. * doc/extend.texi (noplt): Document new attribute. * doc/invoke.texi: Document new attribute. * testsuite/gcc.target/i386/noplt-1.c: New test. * testsuite/gcc.target/i386/noplt-2.c: New test. * testsuite/gcc.target/i386/noplt-3.c: New test. * testsuite/gcc.target/i386/noplt-4.c: New test. This patch does two things: * Adds new generic function attribute "noplt" that is similar in functionality to -fno-plt except that it applies only to calls to functions that are marked with this attribute. * For x86_64, it makes -fno-plt(and the attribute) also work for non-PIC code by directly generating an indirect call via a GOT entry. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224138 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.h (enum reg_class): Move CLOBBERED_REGS prior toamonakov2015-08-183-6/+8
| | | | | | | | | | | Q_REGS. Expand comment. (REG_CLASS_NAMES): Ditto. (REG_CLASS_CONTENTS): Ditto. testsuite: * gcc.target/i386/pr66232-1.c: Adjust scan pattern. * gcc.target/i386/pr66232-3.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223650 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_function_ok_for_sibcall): Check flag_plt.amonakov2015-08-181-0/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223648 138bc75d-0d04-0410-961f-82ee72b054a4
* Allow indirect branch via GOT slot for x32hjl2015-08-188-0/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | X32 doesn't support indirect branch via 32-bit memory slot since indirect branch will load 64-bit address from 64-bit memory slot. Since x32 GOT slot is 64-bit, we should allow indirect branch via GOT slot for x32. gcc/ PR target/66232 * config/i386/constraints.md (Bg): New constraint for GOT memory operand. * config/i386/i386.md (*call_got_x32): New pattern. (*call_value_got_x32): Likewise. * config/i386/predicates.md (GOT_memory_operand): New predicate. gcc/testsuite/ PR target/66232 * gcc.target/i386/pr66232-1.c: New test. * gcc.target/i386/pr66232-2.c: Likewise. * gcc.target/i386/pr66232-3.c: Likewise. * gcc.target/i386/pr66232-4.c: Likewise. * gcc.target/i386/pr66232-5.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223505 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix PR target/65753amonakov2015-08-182-3/+11
| | | | | | | | | | | | | | * gcc.target/i386/pr65753.c: Use -O2 instead of -O. PR target/65753 * config/i386/i386.c (ix86_function_ok_for_sibcall): Allow PIC sibcalls via function pointers. testsuite: * gcc.target/i386/pr65753.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223005 138bc75d-0d04-0410-961f-82ee72b054a4 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223055 138bc75d-0d04-0410-961f-82ee72b054a4
* * calls.c (prepare_call_address): Transform PLT call to GOT lookup andamonakov2015-08-183-1/+21
| | | | | | | | | indirect call by forcing address into a pseudo with -fno-plt. * common.opt (flag_plt): New option. * doc/invoke.texi (Code Generation Options): Add -fno-plt. ([-fno-plt]): Document. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223003 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-181-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226960 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/66919jason2015-08-173-1/+49
| | | | | | * pt.c (tsubst_copy): Pass complain to mark_used, check return value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226955 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/67244jason2015-08-173-0/+34
| | | | | | * pt.c (tsubst_copy_and_build): Call insert_pending_capture_proxies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226951 138bc75d-0d04-0410-961f-82ee72b054a4
* * da.po: Update.jsm282015-08-172-250/+114
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226945 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/65734jason2015-08-176-8/+75
| | | | | | | | | | | gcc/ * stor-layout.c (layout_type): Layout the TYPE_MAIN_VARIANT. (finalize_type_size): Respect TYPE_USER_ALIGN. (layout_type) [ARRAY_TYPE]: Likewise. gcc/cp/ * class.c (fixup_attribute_variants): Respect TYPE_USER_ALIGN. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226941 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/67104jason2015-08-173-3/+60
| | | | | | | * constexpr.c (cxx_eval_array_reference): Handle sparse CONSTRUCTORs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226940 138bc75d-0d04-0410-961f-82ee72b054a4
* 2015-08-17 Yvan Roux <yvan.roux@linaro.org>yroux2015-08-172-2/+11
| | | | | | | | | | | | | Backport from mainline: 2015-08-12 Yvan Roux <yvan.roux@linaro.org> PR target/67127 * config/arm/arm.md (movdi): Restrict illegitimate ldrd/strd checking to ARM core registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226937 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-171-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226931 138bc75d-0d04-0410-961f-82ee72b054a4
* Backport from mainline:uros2015-08-164-2/+53
| | | | | | | | | | | | | | | | | | | | 2015-07-25 Uros Bizjak <ubizjak@gmail.com> PR target/66648 * config/i386/i386.c (ix86_expand_set_or_movmem): Emit main loop execution guard when min_size is less than size_needed. testsuite/ChangeLog: Backport from mainline: 2015-07-25 Uros Bizjak <ubizjak@gmail.com> PR target/66648 * gcc.target/i386/pr66648.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226925 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-161-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226914 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/65974jason2015-08-153-0/+24
| | | | | | * decl2.c (mark_vtable_entries): Suppress -Wdeprecated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226909 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-151-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226906 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix PR c++/66857jason2015-08-143-1/+27
| | | | | | | | | | | | | | | gcc/cp/ChangeLog: PR c++/66857 * cvt.c (ocp_convert): Don't call scalar_constant_value when converting to a class type. gcc/testsuite/ChangeLog: PR c++/66857 * g++.dg/init/pr66857.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226897 138bc75d-0d04-0410-961f-82ee72b054a4
* 2015-08-14 David Edelsohn <dje.gcc@gmail.com>dje2015-08-144-14/+120
| | | | | | | | | | | | | * inclhack.def (aix_stdio_inline): New fix. (aix_strtof_const): Limit to *-*-aix*. (aix_sysmachine): Same. (aix_syswait_2): Same. (aix_volatile): Same. * fixincl.x: Regenerated. * test/base/stdio.h [AIX_STDIO_INLINE]: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226892 138bc75d-0d04-0410-961f-82ee72b054a4
* jit: on OS X, add -Wl,-undefined,dynamic_lookup to driver invocationdmalcolm2015-08-142-0/+17
| | | | | | | | | | | | | 2015-08-13 David Malcolm <dmalcolm@redhat.com> Backport from mainline r226882 2015-08-13 David Malcolm <dmalcolm@redhat.com> * jit-playback.c (invoke_driver): On OS X, add "-Wl,-undefined,dynamic_lookup" to the driver arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226883 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-141-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226880 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-131-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226843 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/67161jason2015-08-123-1/+37
| | | | | | | * error.c (dump_decl) [TEMPLATE_ID_EXPR]: Pass TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226831 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-121-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226797 138bc75d-0d04-0410-961f-82ee72b054a4
* PR sanitizer/66908mpolacek2015-08-114-0/+40
| | | | | | | | | | | * c-ubsan.c: Include gimplify.h. (ubsan_instrument_division): Unshare OP0 and OP1. (ubsan_instrument_shift): Likewise. * c-c++-common/ubsan/pr66908.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226782 138bc75d-0d04-0410-961f-82ee72b054a4
* 2015-08-11 Thomas Preud'homme <thomas.preudhomme@arm.com>thopre012015-08-112-1/+10
| | | | | | | | | | | | Backport from mainline 2015-07-28 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ PR tree-optimization/66828 * tree-ssa-math-opts.c (perform_symbolic_merge): Change type of inc from int64_t to uint64_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226775 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-111-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226772 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-101-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226753 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226745 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-081-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226728 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/67002kkojima2015-08-072-0/+15
| | | | | | | | | * config/sh/sh.c (sh_recog_treg_set_expr): Return false during expand phase to avoid codegen differences with -g. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226726 138bc75d-0d04-0410-961f-82ee72b054a4
* Disable AVX-512VL insns for scalar mode operands on -march=knl.kyukhin2015-08-073-15/+33
| | | | | | | | | | | | | | gcc/ * config/i386/i386.md (define_attr "isa"): Addd avx512vl and noavx512vl. (define_attr "enabled"): Handle avx521vl and noavx512vl. * config/i386/sse.md (define_insn "vec_dupv2df<mask_name>"): Split AVX-512 alternative out of SSE. (define_insn "*vec_concatv2df"): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226722 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix latent elemental wrong codemikael2015-08-075-1/+93
| | | | | | | | | | | | | | | PR fortran/66929 gcc/fortran/ * trans-array.c (gfc_get_proc_ifc_for_expr): Use esym as procedure symbol if available. gcc/testsuite/ PR fortran/66929 * gfortran.dg/generic_30.f90: New. * gfortran.dg/generic_31.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226717 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-071-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226704 138bc75d-0d04-0410-961f-82ee72b054a4
* jit.dg/test-benchmark.c: add a summary of timingsdmalcolm2015-08-062-3/+23
| | | | | | | | | | | | | | | gcc/testsuite/ChangeLog 2015-08-06 David Malcolm <dmalcolm@redhat.com> Backport from trunk r226697: 2015-08-06 David Malcolm <dmalcolm@redhat.com> * jit.dg/test-benchmark.c (main): Record all elapsed times at each optimization level, and print a summary at the end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226698 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/66533jason2015-08-063-1/+9
| | | | | | | * parser.c (cp_parser_primary_expression): Don't skip to the end of the statement if we're parsing tentatively. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226685 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/67130jason2015-08-065-1/+67
| | | | | | | | | | | PR c++/67131 PR c++/66260 * mangle.c (write_expression) [TEMPLATE_ID_EXPR]: Handle variable templates. * pt.c (tsubst_copy_and_build): Check for argument substitution failure. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226677 138bc75d-0d04-0410-961f-82ee72b054a4
* fix ChangeLogjason2015-08-061-3/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226658 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/66260jason2015-08-068-4/+79
| | | | | | | | | | | | | | PR c++/66596 PR c++/66649 PR c++/66923 * pt.c (lookup_template_variable): Use NULL_TREE for type. (instantiate_template_1): Also set DECL_TI_ARGS based on the immediate parent. (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Handle variable templates. (finish_template_variable): Add complain parm. * cp-tree.h: Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226657 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/65195jason2015-08-064-0/+38
| | | | | | | | PR c++/66619 * semantics.c (finish_id_expression): Call convert_from_reference for variable template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226656 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/66336jason2015-08-064-0/+44
| | | | | | | | * pt.c (find_parameter_packs_r): Handle variable templates. (variable_template_specialization_p): New. * cp-tree.h: Declare it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226655 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (start_decl): Don't push the plain VAR_DECL for ajason2015-08-061-0/+5
| | | | | | variable template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226654 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2015-08-061-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226650 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix random class_allocate_18.f90 failuremikael2015-08-054-0/+44
| | | | | | | | | | | | | PR fortran/64921 gcc/fortran/ * class.c (generate_finalization_wrapper): Set finalization procedure symbol's always_explicit attribute. gcc/testsuite/ * gfortran.dg/class_allocate_20.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226636 138bc75d-0d04-0410-961f-82ee72b054a4
* Backport from trunk:mwahab2015-08-055-5/+17
| | | | | | | | | | | | | | | 2015-07-01 Matthew Wahab <matthew.wahab@arm.com> * gcc.target/arm/armv8-sync-comp-swap.c: Replace 'do-require-effective-target' with 'dg-require-effective-target'. * gcc.target/arm/armv8-sync-op-full.c: Likewise. * gcc.target/arm/armv8-sync-op-release.c: Likewise. * gcc.target/arm/armv8-sync-op-acquire.c: Likewise. Also, replace 'stlex' with 'strex' as the expected output. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@226629 138bc75d-0d04-0410-961f-82ee72b054a4