OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [compile/] [pr39845.c] - Blame information for rev 688

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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