[PATCH] Fix DCE REG_LIBCALL note moving from noop move insns (PR rtl-optimization/33644)
Jakub Jelinek
jakub@redhat.com
Fri Oct 19 19:24:00 GMT 2007
On Fri, Oct 19, 2007 at 11:03:00AM -0700, Seongbae Park (ë°ì±ë°°, æ´æå¹) wrote:
> > insns with UNSPECs inside of
> > PARALLELs is IMHO a regression from 4.2 and as such should be fixed.
>
> I'm not sure on this. During the current DCE development,
> we've asked for what UNSPEC means,
> and the collective answer we got was what's described in rtl.def.
That asking was done on IRC, not on the ml.
Can you show which backend uses UNSPEC inside of PARALLEL that is not
deletable? Or was that part added just for symmetricity?
4.2 insn_dead_p certainly didn't do anything special about plain UNSPECs,
though it wasn't run late when ia64 adds those 3 UNSPECs into the RTL chain.
I have quickly skimmed i386, rs6000, sparc, alpha, mips, s390 md files.
UNSPEC alone
ia64/ia64.md
prologue_use
flushrs
bundle_selector
I agree about all these 3 that they shouldn't be deletable.
But the uses of UNSPECs inside of PARALLEL I'm pretty sure all are meant to
mean this insn does what is in the first PARALLEL entry, but does it
slightly differently (except maybe for s390 UNSPEC_EXECUTE, I'm really not
sure about that, but if it wouldn't be deletable, guess 4.2 would have
problems; then UNSPEC_EXECUTE is the only (unspec ) that appears on the
first position inside of the parallel). All the rest is IMNSHO deletable.
UNSPEC inside of PARALLEL
i386/i386.md
return_internal_long
tls_global_dynamic_64
tls_local_dynamic_base_64
alpha/alpha.md
sibcall_osf_1_er
sibcall_osf_1
rs6000/altivec.md
altivec_lve*
altivec_lvx*
altivec_stvx*
altivec_stve*
rs6000/spe.md
spe_evlhhesplat
spe_evlhhesplatx
spe_evlhhossplat
spe_evlhhossplatx
spe_evlhhousplat
spe_evlhhousplatx
spe_evlwhsplat
spe_evlwhsplatx
spe_evlwwsplat
spe_evlwwsplatx
spe_evldd
spe_evlddx
spe_evldh
spe_evldhx
spe_evldw
spe_evldwx
spe_evlwhe
spe_evlwhex
spe_evlwhos
spe_evlwhosx
spe_evlwhou
spe_evlwhoux
spe_evstdd
spe_evstddx
spe_evstdh
spe_evstdhx
spe_evstdw
spe_evstdwx
spe_evstwhe
spe_evstwhex
spe_evstwho
spe_evstwhox
spe_evstwwe
spe_evstwwex
spe_evstwwo
spe_evstwwox
s390/s390.md
UNSPEC_EXECUTE
UNSPEC_ROUND
Jakub
More information about the Gcc-patches
mailing list