12345678910111213141516171819202122232425262728 |
- --- a/gcc/calls.c
- +++ b/gcc/calls.c
- @@ -184,6 +184,12 @@ prepare_call_address (tree fndecl, rtx f
- && targetm.small_register_classes_for_mode_p (FUNCTION_MODE))
- ? force_not_mem (memory_address (FUNCTION_MODE, funexp))
- : memory_address (FUNCTION_MODE, funexp));
- + else if (flag_pic && !flag_plt && fndecl
- + && TREE_CODE (fndecl) == FUNCTION_DECL
- + && !targetm.binds_local_p (fndecl))
- + {
- + funexp = force_reg (Pmode, funexp);
- + }
- else if (! sibcallp)
- {
- #ifndef NO_FUNCTION_CSE
- --- a/gcc/common.opt
- +++ b/gcc/common.opt
- @@ -1659,6 +1659,10 @@ fpie
- Common Report Var(flag_pie,1) Negative(fPIC)
- Generate position-independent code for executables if possible (small mode)
-
- +fplt
- +Common Report Var(flag_plt) Init(1)
- +Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)
- +
- fplugin=
- Common Joined RejectNegative Var(common_deferred_options) Defer
- Specify a plugin to load
|