Commit c62b3659 by Uros Bizjak

re PR target/36246 (Reload chooses too wide mode for reg->mem->xmmreg reload)

	PR target/36246
	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.

testsuite/ChangeLog:

	PR target/36246
	* gcc.target/i386/pr36246.c: New test.

From-SVN: r135437
parent 44e35667
2008-05-16 Uros Bizjak <ubizjak@gmail.com>
PR target/36246
* config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com> 2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com>
* ifcvt.c (dead_or_predicable): Rename * ifcvt.c (dead_or_predicable): Rename
...@@ -58,8 +63,8 @@ ...@@ -58,8 +63,8 @@
2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com> 2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com>
* cfg.c (init_flow): Add argument THE_FUN. Use it * cfg.c (init_flow): Add argument THE_FUN. Use it instead of cfun.
instead of cfun. Update all users. Update all users.
2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com> 2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com>
...@@ -68,10 +73,9 @@ ...@@ -68,10 +73,9 @@
* tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff): * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
Add verbose dump. Add verbose dump.
* tree-pass.h (TDF_VERBOSE): New dump flag. * tree-pass.h (TDF_VERBOSE): New dump flag.
* print-tree.c (print_node): Added code to be able to print * print-tree.c (print_node): Added code to be able to print PHI_NODES.
PHI_NODES.
(tree-flow.h): Added include. (tree-flow.h): Added include.
Makefile.in (print-tree.o): Added TREE_FLOW_H. * Makefile.in (print-tree.o): Added TREE_FLOW_H.
2008-05-16 Bernd Schmidt <bernd.schmidt@analog.com> 2008-05-16 Bernd Schmidt <bernd.schmidt@analog.com>
...@@ -87,8 +91,7 @@ ...@@ -87,8 +91,7 @@
MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise. MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
* config/bfin/bfin-protos.h (enum bfin_cpu_type): Add * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
BFIN_CPU_UNKNOWN. BFIN_CPU_UNKNOWN.
* config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
BF561.
(LIB_SPEC): Use proper linker script for bf561. Error if no mcpu (LIB_SPEC): Use proper linker script for bf561. Error if no mcpu
option. option.
* config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN. * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
...@@ -123,8 +126,7 @@ ...@@ -123,8 +126,7 @@
* ipa-inline.c (compute_inline_parameters): Made public and added * ipa-inline.c (compute_inline_parameters): Made public and added
node parameter. node parameter.
(compute_inline_parameters_for_current): New function. (compute_inline_parameters_for_current): New function.
(pass_inline_param): Now calls (pass_inline_param): Now calls compute_inline_parameters_for_current.
compute_inline_parameters_for_current.
(inline_generate_summary): Removed parameter and made to loop over (inline_generate_summary): Removed parameter and made to loop over
all cgraph nodes. all cgraph nodes.
(pass_ipa_inline): Updated for new IPA_PASS structure. (pass_ipa_inline): Updated for new IPA_PASS structure.
...@@ -147,20 +149,18 @@ ...@@ -147,20 +149,18 @@
2008-05-15 Diego Novillo <dnovillo@google.com> 2008-05-15 Diego Novillo <dnovillo@google.com>
* config/arm/arm.c (arm_return_in_memory): Fix return * config/arm/arm.c (arm_return_in_memory): Fix return type.
type.
* config/arm/arm-protos.h (arm_return_in_memory): Likewise. * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
2008-05-15 Adam Nemet <anemet@caviumnetworks.com> 2008-05-15 Adam Nemet <anemet@caviumnetworks.com>
PR middle-end/36194 PR middle-end/36194
* combine.c (check_conversion): Rename back to check_promoted_subreg. * combine.c (check_conversion): Rename back to check_promoted_subreg.
Don't call record_truncated_value from here. Don't call record_truncated_value from here.
(record_truncated_value): Turn it into a for_each_rtx callback. (record_truncated_value): Turn it into a for_each_rtx callback.
(record_truncated_values): New function. (record_truncated_values): New function.
(combine_instructions): Call note_uses with (combine_instructions): Call note_uses with record_truncated_values.
record_truncated_values. Change name of check_conversion to Change name of check_conversion to check_promoted_subreg.
check_promoted_subreg.
2008-05-15 Janis Johnson <janis187@us.ibm.com> 2008-05-15 Janis Johnson <janis187@us.ibm.com>
......
...@@ -1516,6 +1516,14 @@ enum reg_class ...@@ -1516,6 +1516,14 @@ enum reg_class
#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ #define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
ix86_secondary_memory_needed ((CLASS1), (CLASS2), (MODE), 1) ix86_secondary_memory_needed ((CLASS1), (CLASS2), (MODE), 1)
/* Get_secondary_mem widens integral modes to BITS_PER_WORD.
There is no need to emit full 64 bit move on 64 bit targets
for integral modes that can be moved using 32 bit move. */
#define SECONDARY_MEMORY_NEEDED_MODE(MODE) \
(GET_MODE_BITSIZE (MODE) < 32 && INTEGRAL_MODE_P (MODE) \
? mode_for_size (32, GET_MODE_CLASS (MODE), 0) \
: MODE)
/* QImode spills from non-QI registers need a scratch. This does not /* QImode spills from non-QI registers need a scratch. This does not
happen often -- the only example so far requires an uninitialized happen often -- the only example so far requires an uninitialized
pseudo. */ pseudo. */
......
2008-05-16 Uros Bizjak <ubizjak@gmail.com>
PR target/36246
* gcc.target/i386/pr36246.c: New test.
2008-05-16 Sebastian Pop <sebastian.pop@amd.com> 2008-05-16 Sebastian Pop <sebastian.pop@amd.com>
Jan Sjodin <jan.sjodin@amd.com> Jan Sjodin <jan.sjodin@amd.com>
...@@ -58,16 +63,14 @@ ...@@ -58,16 +63,14 @@
2008-05-15 Janis Johnson <janis187@us.ibm.com> 2008-05-15 Janis Johnson <janis187@us.ibm.com>
* lib/torture-options.exp: New support for torture options. * lib/torture-options.exp: New support for torture options.
* lib/gfortran-dg.exp (gfortran-dg-runtest): Use new torture * lib/gfortran-dg.exp (gfortran-dg-runtest): Use new torture procs.
procs.
* lib/c-torture.exp: Define C_TORTURE_OPTIONS instead of * lib/c-torture.exp: Define C_TORTURE_OPTIONS instead of
TORTURE_OPTIONS; don't define torture_with_loops and TORTURE_OPTIONS; don't define torture_with_loops and
torture_without_loops. torture_without_loops.
* lib/gcc-dg.exp: Define DG_TORTURE_OPTIONS instead of * lib/gcc-dg.exp: Define DG_TORTURE_OPTIONS instead of
TORTURE_OPTIONS; don't define torture_with_loops and TORTURE_OPTIONS; don't define torture_with_loops and
torture_without_loops. torture_without_loops.
(gcc-dg-runtest): Use new torture procs if no torture options (gcc-dg-runtest): Use new torture procs if no torture options defined.
defined.
* lib/fortran-torture.exp: Define FORTRAN_TORTURE_OPTIONS instead of * lib/fortran-torture.exp: Define FORTRAN_TORTURE_OPTIONS instead of
TORTURE_OPTIONS. TORTURE_OPTIONS.
(fortran-torture-execute): Use torture_with_loops instead of (fortran-torture-execute): Use torture_with_loops instead of
......
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
/* { dg-options "-O2 -mtune=generic" } */
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
typedef int __v4si __attribute__ ((__vector_size__ (16)));
__m128i
_mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
{
return (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
}
/* { dg-final { scan-assembler-not "movq" } } */
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