Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 352201 | Differences between
and this patch

Collapse All | Expand All

(-)file_not_specified_in_diff (-17 / +30 lines)
Line  Link Here
0
-- a/gcc/config/i386/i386.c
0
++ b/gcc/config/i386/i386.c
Lines 4724-4741 init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */ Link Here
4724
  cum->nregs = ix86_regparm;
4724
  cum->nregs = ix86_regparm;
4725
  if (TARGET_64BIT)
4725
  if (TARGET_64BIT)
4726
    {
4726
    {
4727
      if (cum->call_abi != DEFAULT_ABI)
4727
      cum->nregs = (cum->call_abi == SYSV_ABI
4728
        cum->nregs = DEFAULT_ABI != SYSV_ABI ? X86_64_REGPARM_MAX
4728
                   ? X86_64_REGPARM_MAX
4729
        				     : X64_REGPARM_MAX;
4729
                   : X64_REGPARM_MAX);
4730
    }
4730
    }
4731
  if (TARGET_SSE)
4731
  if (TARGET_SSE)
4732
    {
4732
    {
4733
      cum->sse_nregs = SSE_REGPARM_MAX;
4733
      cum->sse_nregs = SSE_REGPARM_MAX;
4734
      if (TARGET_64BIT)
4734
      if (TARGET_64BIT)
4735
        {
4735
        {
4736
          if (cum->call_abi != DEFAULT_ABI)
4736
          cum->sse_nregs = (cum->call_abi == SYSV_ABI
4737
            cum->sse_nregs = DEFAULT_ABI != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
4737
                           ? X86_64_SSE_REGPARM_MAX
4738
            					     : X64_SSE_REGPARM_MAX;
4738
                           : X64_SSE_REGPARM_MAX);
4739
        }
4739
        }
4740
    }
4740
    }
4741
  if (TARGET_MMX)
4741
  if (TARGET_MMX)
Lines 5849-5858 function_arg_64 (CUMULATIVE_ARGS *cum, enum machine_mode mode, Link Here
5849
  if (mode == VOIDmode)
5849
  if (mode == VOIDmode)
5850
    return GEN_INT (cum->maybe_vaarg
5850
    return GEN_INT (cum->maybe_vaarg
5851
		    ? (cum->sse_nregs < 0
5851
		    ? (cum->sse_nregs < 0
5852
		       ? (cum->call_abi == DEFAULT_ABI
5852
			  ? X86_64_SSE_REGPARM_MAX
5853
		          ? SSE_REGPARM_MAX
5854
		          : (DEFAULT_ABI != SYSV_ABI ? X86_64_SSE_REGPARM_MAX
5855
		          			     : X64_SSE_REGPARM_MAX))
5856
 	       : cum->sse_regno)
5853
 	       : cum->sse_regno)
5857
		    : -1);
5854
		    : -1);
5858
5855
Lines 6552-6561 setup_incoming_varargs_64 (CUMULATIVE_ARGS *cum) Link Here
6552
  rtx nsse_reg;
6549
  rtx nsse_reg;
6553
  alias_set_type set;
6550
  alias_set_type set;
6554
  int i;
6551
  int i;
6555
  int regparm = ix86_regparm;
6556
6557
  if (cum->call_abi != DEFAULT_ABI)
6558
    regparm = DEFAULT_ABI != SYSV_ABI ? X86_64_REGPARM_MAX : X64_REGPARM_MAX;
6559
6552
6560
  /* GPR size of varargs save area.  */
6553
  /* GPR size of varargs save area.  */
6561
  if (cfun->va_list_gpr_size)
6554
  if (cfun->va_list_gpr_size)
Lines 6577-6583 setup_incoming_varargs_64 (CUMULATIVE_ARGS *cum) Link Here
6577
  set = get_varargs_alias_set ();
6570
  set = get_varargs_alias_set ();
6578
6571
6579
  for (i = cum->regno;
6572
  for (i = cum->regno;
6580
       i < regparm
6573
       i < X86_64_REGPARM_MAX
6581
       && i < cum->regno + cfun->va_list_gpr_size / UNITS_PER_WORD;
6574
       && i < cum->regno + cfun->va_list_gpr_size / UNITS_PER_WORD;
6582
       i++)
6575
       i++)
6583
    {
6576
    {
6584
-- /dev/null
6577
++ b/gcc/testsuite/gcc.target/i386/pr43869.c
Line 0 Link Here
1
/* { dg-do run } */
2
/* { dg-require-effective-target lp64 } */
3
4
int __attribute__((__noinline__))
5
bugged(float f1, float f2, float f3, float f4,
6
       float f5, float f6, float f7, float f8)
7
{
8
    return f1 || f2 || f3 || f4 || f5 != 1. || f6 != 1. || f7 != 1. || f8 != 1.;
9
}
10
11
int __attribute__((__noinline__, __ms_abi__)) isbugged(void)
12
{
13
    return bugged(0, 0, 0, 0, 1., 1., 1., 1.);
14
}
15
16
int main()
17
{
18
    return isbugged();
19
}
20

Return to bug 352201