I am doing a port for a 32bit target in GCC 4.4.0 I am getting segmentation fault in the function assign_temp in the following line:
if (DECL_P (type_or_decl)) 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 When there is a library call for an operation that takes two 64bit arguments, say division of two long long values - _divdi3, the following sequence happens emit_library_call_value -> emit_library_call_value_1 -> emit_push_insn->assign_temp emit_push_insn is called because the second argument is pushed on the stack and ACCUMULATE_OUTGOING_ARGS is set. assign_temp is called because STRICT_ALIGNMENT && PARM_BOUNDARY < GET_MODE_ALIGNMENT (DImode) is true Can somebody please confirm whether this is due to some mistake in my port or a GCC bug? Thanks, Shafi