blob: 2ceafdc49c645add692afc8159f73682da031791 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */
extern void abort (void);
typedef unsigned int size_t;
struct rtx_def;
typedef struct rtx_def *rtx;
typedef union varray_data_tag
{
struct reg_info_def *reg[1];
} varray_data;
struct varray_head_tag
{
size_t num_elements;
varray_data data;
};
typedef struct varray_head_tag *varray_type;
typedef struct reg_info_def
{
} reg_info;
extern varray_type reg_n_info;
static rtx *reg_base_value;
static rtx *new_reg_base_value;
/* APPLE LOCAL mainline 4840357 */
rtx
blah (unsigned int regno)
{
if (new_reg_base_value[regno] && ((*(
{
if (regno >=
reg_n_info->
num_elements)
abort ();
&reg_n_info->data.reg[regno];}
))))
return reg_base_value[regno];
}
/* If we have more than 1 cast to a struct rtx_def * *, then we failed to
eliminate some useless typecasting. The first type cast is needed
to convert the unsigned int regno parameter into a struct rtx_def **. */
/* { dg-final { scan-tree-dump-times "\\(struct rtx_def \\* \\*\\)" 1 "dom3"} } */