This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
ICE in flow.c - Gcc 4.1.2 private port
- From: "Mohamed Shafi" <shafitvm at gmail dot com>
- To: GCC <gcc at gcc dot gnu dot org>
- Date: Mon, 21 Jul 2008 19:14:09 +0530
- Subject: ICE in flow.c - Gcc 4.1.2 private port
Hello all,
For the target that i am porting if support for partial argument
passing is enabled i get the following error:
error: Attempt to delete prologue/epilogue insn:
internal compiler error: in propagate_one_insn, at flow.c:1699
This is 16bit target with 4 argument registers. FRAME_POINTER_REQUIRED
is defined to 0.
The code that is being complied is :
f(float a[],int b[],int c,float d)
{
}
>>>>>>
>From *.c.00.expand
;; Start of basic block 0, registers live: (nil)
(note 15 2 6 0 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 6 15 7 0 (set (reg/v/f:HI 24 [ a ])
(reg:HI 0 R0 [ a ])) -1 (nil)
(nil))
(insn 7 6 8 0 (set (reg/v/f:HI 25 [ b ])
(reg:HI 1 R1 [ b ])) -1 (nil)
(nil))
(insn 8 7 9 0 (set (reg/v:HI 26 [ c ])
(reg:HI 2 R2 [ c ])) -1 (nil)
(nil))
(insn 9 8 12 0 (set (mem/c/i:HI (reg/f:HI 18 virtual-incoming-args) [0
d+0 S2 A16])
(reg:HI 3 R3)) -1 (nil)
(nil))
(insn 12 9 10 0 (clobber (reg/v:SF 27 [ d ])) -1 (nil)
(nil))
(insn 10 12 11 0 (set (subreg:HI (reg/v:SF 27 [ d ]) 0)
(mem/c/i:HI (reg/f:HI 18 virtual-incoming-args) [0 d+0 S2
A16])) -1 (nil)
(nil))
(insn 11 10 13 0 (set (subreg:HI (reg/v:SF 27 [ d ]) 2)
(mem/c/i:HI (plus:HI (reg/f:HI 18 virtual-incoming-args)
(const_int 2 [0x2])) [0 d+2 S2 A16])) -1 (nil)
(nil))
(note 13 11 14 0 NOTE_INSN_FUNCTION_BEG)
>>>>>
from *.c.37.lreg
(note 2 0 15 NOTE_INSN_DELETED)
;; Start of basic block 0, registers live: 3 [R3] 12 [R12]
(note 15 2 9 0 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 9 15 13 0 (set (mem/c/i:HI (reg/f:HI 12 R12) [0 d+0 S2 A16])
(reg:HI 3 R3)) 1 {movhi_internal} (nil)
(nil))
(note 13 9 17 0 NOTE_INSN_FUNCTION_BEG)
>>>>>
from *.c.40.flow2
(note 15 2 31 0 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn/f 31 15 32 0 (set (reg/f:HI 12 R12)
(minus:HI (reg/f:HI 12 R12)
(const_int 2 [0x2]))) -1 (nil)
(nil))
(insn/f 32 31 33 0 (set (mem:HI (reg/f:HI 12 R12) [0 S2 A16])
(reg:HI 3 R3)) -1 (nil)
(nil))
(note 33 32 9 0 NOTE_INSN_PROLOGUE_END)
(insn 9 33 13 0 (set (mem/c/i:HI (reg/f:HI 12 R12) [0 d+0 S2 A16])
(reg:HI 3 R3)) 1 {movhi_internal} (nil)
(nil))
(note 13 9 17 0 NOTE_INSN_FUNCTION_BEG)
>>>>>
When argument is passed partially then
'current_function_pretend_args_size' is initialized and prologue will
set stack space accordingly. Based on the live information
'propagate_one_insn()' is trying to delete the insn from the
prologue. My question is is gcc suppose to delete insn 9, even before
prologue generation ?
If its not the case where am i going wrong?
Regards,
Shafi