On Mon, Aug 1, 2011 at 6:38 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Thu, May 26, 2011 at 9:56 AM, Julian Brown <jul...@codesourcery.com> wrote: >> This patch allows padding to be specified per-target for libcalls. This >> hasn't been traditionally important, because libcalls haven't accepted >> quantities which might need padding, but that's no longer true with the >> new(-ish) fixed-point support helper functions. >> >> Tested (alongside other fixed-point support patches) with cross to ARM >> EABI in both big & little-endian mode (the target-specific part is to >> avoid a behaviour change for half-float types on ARM). OK to apply? >> >> Thanks, >> >> Julian >> >> ChangeLog >> >> gcc/ >> * calls.c (emit_library_call_value_1): Support padding for libcall >> arguments and return values. >> * config/arm/arm.c (arm_pad_arg_upward): Pad half-float values >> downwards in big-endian mode. > > This breaks bootstrap on Linux/x86: > > http://gcc.gnu.org/ml/gcc-regression/2011-08/msg00007.html > > ../../src-trunk/gcc/calls.c: In function 'rtx_def* > emit_library_call_value_1(int, rtx, rtx, libcall_type, machine_mode, > int, __va_list_tag*)': > ../../src-trunk/gcc/calls.c:3832:11: error: unused variable 'size' > [-Werror=unused-variable] > cc1plus: all warnings being treated as errors > > make[6]: *** [calls.o] Error 1 >
I am testing this patch. -- H.J. --- diff --git a/gcc/calls.c b/gcc/calls.c index 7ad30b4..c4f8b46 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3829,7 +3829,9 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx val ue, rtx val = argvec[argnum].value; rtx reg = argvec[argnum].reg; int partial = argvec[argnum].partial; +#ifdef BLOCK_REG_PADDING int size = 0; +#endif /* Handle calls that pass values in multiple non-contiguous locations. The PA64 has examples of this for library calls. */