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.  */

Reply via email to