Segmentation fault when calling a library fun - GCC bug?
Ian Lance Taylor
iant@google.com
Fri Sep 25 15:16:00 GMT 2009
Mohamed Shafi <shafitvm@gmail.com> writes:
> After analyzing the issue i find that this might be a bug. I just want
> to confirm if that is the case or not.
> In order to reproduce i think the target should have the following properties
> a. Only 2 32bit registers available as argument registers.
> b. Second 64bit value will be pushed in stack
> c. ACCUMULATE_OUTGOING_ARGS is set
> d. STRICT_ALIGNMENT is set
> e. PARM_BOUNDARY is 32
What is BIGGEST_ALIGNMENT? Does a 64-bit value require a 64-bit
alignment? If not, perhaps BIGGEST_ALIGNMENT should be 32.
If BIGGEST_ALIGNMENT must be 64 for some reason, but in this specific
case you have a DImode value which does not require 64-bit alignment,
then I agree that there is a case missing from the compiler.
Unfortunately it looks like it may be painful to fix, as the proper
fix will entail using TYPE_ALIGN of the type, but the type is not
currently available in emit_library_call_value
Ian
More information about the Gcc
mailing list