OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [compile/] [pr39845.c] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 297 jeremybenn
typedef union tree_node *tree;
2
enum tree_code { EXCESS_PRECISION_EXPR };
3
enum built_in_function { BUILT_IN_ACOS, BUILT_IN_FPCLASSIFY, BUILT_IN_ISFINITE };
4
struct tree_base {
5
    __extension__ enum tree_code code : 16;
6
    unsigned side_effects_flag : 1;
7
};
8
struct tree_exp {
9
    tree     operands[1];
10
};
11
struct tree_function_decl {
12
    __extension__ enum built_in_function function_code : 11;
13
    unsigned static_ctor_flag : 1;
14
};
15
union tree_node {
16
    struct tree_base base;
17
    struct tree_function_decl function_decl;
18
    struct tree_exp exp;
19
};
20
static tree
21
convert_arguments (tree fundecl)
22
{
23
  tree val = (void *)0;
24
  unsigned int parmnum;
25
  unsigned char type_generic_remove_excess_precision = 0;
26
  switch (((fundecl)->function_decl.function_code))
27
    {
28
      case BUILT_IN_ISFINITE:
29
      case BUILT_IN_FPCLASSIFY:
30
          type_generic_remove_excess_precision = 1;
31
    }
32
  for (parmnum = 0;; ++parmnum)
33
    if (((enum tree_code) (val)->base.code) == EXCESS_PRECISION_EXPR
34
        && !type_generic_remove_excess_precision)
35
      val = ((val)->exp.operands[0]);
36
  return val;
37
}
38
tree
39
build_function_call_vec (tree function)
40
{
41
  return convert_arguments (function);
42
}
43
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.