From: Uros Bizjak Date: Tue, 6 Sep 2011 21:04:55 +0000 (+0200) Subject: i386.c (ix86_function_value_regno_p): Use AX_REG. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8092dd900b9483f1f8ec716c5d94a5686e669b0d;p=gcc.git i386.c (ix86_function_value_regno_p): Use AX_REG. 2011-09-06 Uros Bizjak * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG. (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX. testsuite/ChangeLog: 2011-09-06 Uros Bizjak * gcc.target/i386/builtin-apply-mmx.c: Require ia32 effective target. From-SVN: r178610 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 465393aff13..df4877715bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-09-06 Uros Bizjak + + * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG. + (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX. + 2011-09-06 Iain Sandoe * config/darwin10.h Remove duplicate LIB_SPEC. @@ -473,10 +478,8 @@ 2011-09-02 Richard Guenther - * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not - fold alloca (0). - (ccp_fold_stmt): Continue replacing args when folding - alloca fails. + * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0). + (ccp_fold_stmt): Continue replacing args when folding alloca fails. 2011-08-31 Richard Guenther @@ -495,8 +498,7 @@ (collect_object_sizes_for): Likewise. * tree-scalar-evolution.c (interpret_expr): Don't handle ternary RHSs. - * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and - simplify. + * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify. (ssa_forward_propagate_and_combine): Adjust. * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR as ternary. @@ -643,8 +645,8 @@ * gthr-posix.h (__gthread_active_p): Do not use preprocessor conditionals and comments inside macro arguments. -20011-08-29 Artjoms Sinkarovs - Richard Guenther +2011-08-29 Artjoms Sinkarovs + Richard Guenther * tree.h (constant_boolean_node): Adjust prototype. * fold-const.c (fold_convert_loc): Move aggregate conversion diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 555db593cdb..ff8c49f0bf4 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -7015,7 +7015,7 @@ ix86_function_value_regno_p (const unsigned int regno) { switch (regno) { - case 0: + case AX_REG: return true; case FIRST_FLOAT_REG: @@ -7053,18 +7053,18 @@ function_value_32 (enum machine_mode orig_mode, enum machine_mode mode, we normally prevent this case when mmx is not available. However some ABIs may require the result to be returned like DImode. */ if (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 8) - regno = TARGET_MMX ? FIRST_MMX_REG : 0; + regno = FIRST_MMX_REG; /* 16-byte vector modes in %xmm0. See ix86_return_in_memory for where we prevent this case when sse is not available. However some ABIs may require the result to be returned like integer TImode. */ else if (mode == TImode || (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 16)) - regno = TARGET_SSE ? FIRST_SSE_REG : 0; + regno = FIRST_SSE_REG; /* 32-byte vector modes in %ymm0. */ else if (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 32) - regno = TARGET_AVX ? FIRST_SSE_REG : 0; + regno = FIRST_SSE_REG; /* Floating point return values in %st(0) (unless -mno-fp-ret-in-387). */ else if (X87_FLOAT_MODE_P (mode) && TARGET_FLOAT_RETURNS_IN_80387) @@ -7098,6 +7098,8 @@ function_value_64 (enum machine_mode orig_mode, enum machine_mode mode, /* Handle libcalls, which don't provide a type node. */ if (valtype == NULL) { + unsigned int regno; + switch (mode) { case SFmode: @@ -7108,15 +7110,19 @@ function_value_64 (enum machine_mode orig_mode, enum machine_mode mode, case SDmode: case DDmode: case TDmode: - return gen_rtx_REG (mode, FIRST_SSE_REG); + regno = FIRST_SSE_REG; + break; case XFmode: case XCmode: - return gen_rtx_REG (mode, FIRST_FLOAT_REG); + regno = FIRST_FLOAT_REG; + break; case TCmode: return NULL; default: - return gen_rtx_REG (mode, AX_REG); + regno = AX_REG; } + + return gen_rtx_REG (mode, regno); } else if (POINTER_TYPE_P (valtype)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index db1c7fda19e..802525053a8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-09-06 Uros Bizjak + + * gcc.target/i386/builtin-apply-mmx.c: Require ia32 effective target. + 2011-09-06 Enkovich Ilya * gcc.dg/tree-ssa/pr38533.c (dg-options): Added option @@ -224,7 +228,7 @@ * gcc.dg/tree-ssa/ssa-ccp-26.c: Likewise. * gcc.dg/pr36902.c: XFAIL. -2011-08-30 Ilya Tocar +2011-08-30 Ilya Tocar * gcc.target/i386/fma-check.h: New. * gcc.target/i386/fma-256-fmaddXX.c: New testcase. diff --git a/gcc/testsuite/gcc.target/i386/builtin-apply-mmx.c b/gcc/testsuite/gcc.target/i386/builtin-apply-mmx.c index f6477e264a2..badfe03a97d 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-apply-mmx.c +++ b/gcc/testsuite/gcc.target/i386/builtin-apply-mmx.c @@ -11,7 +11,7 @@ /* { dg-do run { xfail { ! *-*-darwin* } } } */ /* { dg-options "-O2 -mmmx" } */ -/* { dg-require-effective-target ilp32 } */ +/* { dg-require-effective-target ia32 } */ #include "mmx-check.h"