Commit 30a5d3e6 by Uros Bizjak Committed by Uros Bizjak

re PR target/66140 (ICE at extract_insn, at recog.c:2343 when compiling for alpha with gcc-5.1.1)

	PR target/66140
	* config/alpha/alpha.c (get_aligned_mem): Also look for reload
	replacements in memory addresses.
	(get_unaligned_address): Ditto.

testsuite/ChangeLog:

	PR target/66140
	* gcc.target/alpha/pr66140.c: New test.

From-SVN: r223232
parent 5ea73ae3
2015-05-16 Uros Bizjak <ubizjak@gmail.com>
PR target/66140
* config/alpha/alpha.c (get_aligned_mem): Also look for reload
replacements in memory addresses.
(get_unaligned_address): Ditto.
2015-05-15 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/64454
......
......@@ -1556,8 +1556,7 @@ get_aligned_mem (rtx ref, rtx *paligned_mem, rtx *pbitnum)
gcc_assert (MEM_P (ref));
if (reload_in_progress
&& ! memory_address_p (GET_MODE (ref), XEXP (ref, 0)))
if (reload_in_progress)
{
base = find_replacement (&XEXP (ref, 0));
gcc_assert (memory_address_p (GET_MODE (ref), base));
......@@ -1602,11 +1601,9 @@ get_unaligned_address (rtx ref)
gcc_assert (MEM_P (ref));
if (reload_in_progress
&& ! memory_address_p (GET_MODE (ref), XEXP (ref, 0)))
if (reload_in_progress)
{
base = find_replacement (&XEXP (ref, 0));
gcc_assert (memory_address_p (GET_MODE (ref), base));
}
else
......
2015-05-16 Uros Bizjak <ubizjak@gmail.com>
PR target/66140
* gcc.target/alpha/pr66140.c: New test.
2015-05-15 Mikhail Maltsev <maltsevm@gmail.com>
PR c/48956
......
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=ev4" } */
struct scsi_cmnd {
int sc_data_direction;
};
struct lpfc_hba {
unsigned cfg_total_seg_cnt;
};
struct lpfc_scsi_buf {
struct scsi_cmnd *pCmd;
unsigned seg_cnt;
unsigned *fcp_bpl;
};
extern void *sg_next(void *sg);
extern void *scsi_sglist(struct scsi_cmnd *cmd);
extern unsigned scsi_sg_count(struct scsi_cmnd *cmd);
static inline void dma_map_sg_attrs(void *sg, int nents, int dir)
{
int i;
for (i = 0; i < nents; i++, sg = sg_next(sg))
;
if (!dir)
asm volatile( "call_pal %0" : : "i"(129));
}
static inline void lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
unsigned *pde5)
{
void *sgde;
int i;
*pde5 = (((0x85 & 0x000000ff) << 24) | (*pde5 & ~(0x000000ff << 24)));
for (i = 0, sgde = scsi_sglist(sc); i < 2; i++, sgde = sg_next(sgde))
;
}
void lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
struct lpfc_scsi_buf *lpfc_cmd)
{
struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
unsigned *bpl = lpfc_cmd->fcp_bpl;
dma_map_sg_attrs(scsi_sglist(scsi_cmnd),
scsi_sg_count(scsi_cmnd),
scsi_cmnd->sc_data_direction);
if (lpfc_cmd->seg_cnt > phba->cfg_total_seg_cnt)
lpfc_bg_setup_bpl(phba, scsi_cmnd, bpl);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment