~ubuntu-branches/ubuntu/maverick/ghdl/maverick

« back to all changes in this revision

Viewing changes to gcc/gcc/config/sparc/sparc.c

  • Committer: Bazaar Package Importer
  • Author(s): Wesley J. Landaker
  • Date: 2009-04-02 21:23:07 UTC
  • mfrom: (1.1.11 upstream) (3.2.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090402212307-01pkh97q9b3u1vea
Tags: 0.27+svn110+gcc4.3.3+dfsg-1
* Now using gcc-4.3.3
* Updated copyright information
* Added Vcs-Git information
* Updated to policy 3.8.1 

Show diffs side-by-side

added added

removed removed

Lines of Context:
575
575
#undef TARGET_HANDLE_OPTION
576
576
#define TARGET_HANDLE_OPTION sparc_handle_option
577
577
 
578
 
#if TARGET_GNU_TLS
 
578
#if TARGET_GNU_TLS && defined(HAVE_AS_SPARC_UA_PCREL)
579
579
#undef TARGET_ASM_OUTPUT_DWARF_DTPREL
580
580
#define TARGET_ASM_OUTPUT_DWARF_DTPREL sparc_output_dwarf_dtprel
581
581
#endif
5118
5118
   Return an expression valid as a return value for the two macros
5119
5119
   FUNCTION_ARG and FUNCTION_VALUE.
5120
5120
 
5121
 
   SIZE is the size in bytes of the vector.
5122
 
   BASE_MODE is the argument's base machine mode.
 
5121
   SIZE is the size in bytes of the vector (at least 8 bytes).
5123
5122
   REGNO is the FP hard register the vector will be passed in.  */
5124
5123
 
5125
5124
static rtx
5126
 
function_arg_vector_value (int size, enum machine_mode base_mode, int regno)
 
5125
function_arg_vector_value (int size, int regno)
5127
5126
{
5128
 
  unsigned short base_mode_size = GET_MODE_SIZE (base_mode);
5129
 
  int nregs = size / base_mode_size, i;
 
5127
  int i, nregs = size / 8;
5130
5128
  rtx regs;
5131
5129
 
5132
5130
  regs = gen_rtx_PARALLEL (BLKmode, rtvec_alloc (nregs));
5135
5133
    {
5136
5134
      XVECEXP (regs, 0, i)
5137
5135
        = gen_rtx_EXPR_LIST (VOIDmode,
5138
 
                             gen_rtx_REG (base_mode, regno),
5139
 
                             GEN_INT (base_mode_size * i));
5140
 
      regno += base_mode_size / 4;
 
5136
                             gen_rtx_REG (DImode, regno + 2*i),
 
5137
                             GEN_INT (i*8));
5141
5138
    }
5142
5139
 
5143
5140
  return regs;
5183
5180
 
5184
5181
      if (mode == BLKmode)
5185
5182
        return function_arg_vector_value (size,
5186
 
                                          TYPE_MODE (TREE_TYPE (type)),
5187
5183
                                          SPARC_FP_ARG_FIRST + 2*slotno);
5188
5184
      else
5189
5185
        mclass = MODE_FLOAT;
5599
5595
 
5600
5596
      if (mode == BLKmode)
5601
5597
        return function_arg_vector_value (size,
5602
 
                                          TYPE_MODE (TREE_TYPE (type)),
5603
5598
                                          SPARC_FP_ARG_FIRST);
5604
5599
      else
5605
5600
        mclass = MODE_FLOAT;
8334
8329
 
8335
8330
  switch (c)
8336
8331
    {
 
8332
    case 'D':
 
8333
      return (GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_INT
 
8334
              && GET_CODE (op) == CONST_VECTOR);
 
8335
 
8337
8336
    case 'Q':
8338
8337
      return fp_sethi_p (op);
8339
8338