gcc

~vcs-imports/gcc/+git/gcc:hjl/pr67215/gcc-5-branch

Last commit made on 2015-08-18
Get this branch:
git clone -b hjl/pr67215/gcc-5-branch https://git.launchpad.net/~vcs-imports/gcc/+git/gcc

Branch merges

Branch information

Name:
hjl/pr67215/gcc-5-branch
Repository:
lp:~vcs-imports/gcc/+git/gcc

Recent commits

19894c6... by "H.J. Lu" <email address hidden>

Properly handle -fno-plt in ix86_expand_call

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.

2381bc3... by hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>

Add more tests for PR target/66232

 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

442e79d... by hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>

Allow indirect sibcall with register arguments

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

739f56d... by uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>

 * gcc.target/i386/noplt-1.c (dg-do): Fix target selector.
 * 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

ddce735... by tmsriram <tmsriram@138bc75d-0d04-0410-961f-82ee72b054a4>

2015-06-04 Sriraman Tallam <email address hidden>

 * 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

c06740d... by amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>

 * config/i386/i386.h (enum reg_class): Move CLOBBERED_REGS prior to
 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

991291d... by amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>

* config/i386/i386.c (ix86_function_ok_for_sibcall): Check flag_plt.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223648 138bc75d-0d04-0410-961f-82ee72b054a4

fad38a0... by hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>

Allow indirect branch via GOT slot for x32

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

b95473c... by amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>

Fix PR target/65753

 * 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

045ed2e... by amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>

 * calls.c (prepare_call_address): Transform PLT call to GOT lookup and
 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