re PR rtl-optimization/13313 (Wrong code generated)

PR optimization/13313
	* combine.c (make_extraction) [REG]: Do not use
	gen_lowpart_for_combine when POS is non-zero.

From-SVN: r74676
This commit is contained in:
Eric Botcazou 2003-12-16 07:50:31 +00:00
parent cbefa3c9a2
commit 91f8389c1b
4 changed files with 41 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2003-12-16 Eric Botcazou <ebotcazou@libertysurf.fr>
PR optimization/13313
* combine.c (make_extraction) [REG]: Do not use
gen_lowpart_for_combine when POS is non-zero.
2003-12-16 Hartmut Penner <hpenner@de.ibm.com>
* altivec.h (vec_cmple, vec_all_numeric): Fix typo.

View File

@ -6043,10 +6043,11 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
{
if (tmode != inner_mode)
{
if (in_dest)
/* We can't call gen_lowpart_for_combine in a DEST since we
always want a SUBREG (see below) and it would sometimes
return a new hard register. */
if (pos || in_dest)
{
/* We can't call gen_lowpart_for_combine here since we always want
a SUBREG and it would sometimes return a new hard register. */
HOST_WIDE_INT final_word = pos / BITS_PER_WORD;
if (WORDS_BIG_ENDIAN

View File

@ -1,3 +1,7 @@
2003-12-16 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.c-torture/execute/20031216-1.c: New test.
2003-12-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
* g++.dg/template/ptrmem7.C: Simplified the test case to not hit
@ -134,10 +138,10 @@
* g++.dg/ext/visibility-5.C: Likewise.
* g++.dg/ext/visibility-6.C: Likewise.
2003-12-07 Giovanni Bajo <giovannibajo@gcc.gnu.org>
* g++.dg/lookup/java1.C: New test.
* g++.dg/lookup/java2.C: New test.
2003-12-07 Giovanni Bajo <giovannibajo@gcc.gnu.org>
* g++.dg/lookup/java1.C: New test.
* g++.dg/lookup/java2.C: New test.
2003-12-07 Falk Hueffner <falk@debian.org>

View File

@ -0,0 +1,23 @@
/* PR optimization/13313 */
/* Origin: Mike Lerwill <mike@ml-solutions.co.uk> */
extern void abort(void);
void DisplayNumber (unsigned long v)
{
if (v != 0x9aL)
abort();
}
unsigned long ReadNumber (void)
{
return 0x009a0000L;
}
int main (void)
{
unsigned long tmp;
tmp = (ReadNumber() & 0x00ff0000L) >> 16;
DisplayNumber (tmp);
return 0;
}