re PR target/53120 (ICE exposing strict_low_part / in/out operand thinko -fno-tree-sra)
PR target/53120 * gcc.dg/torture/pr53120.c: New test. From-SVN: r186844
This commit is contained in:
parent
d71735933a
commit
8ca72b98a6
2 changed files with 115 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-04-26 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
PR target/53120
|
||||
* gcc.dg/torture/pr53120.c: New test.
|
||||
|
||||
2012-04-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/52979
|
||||
|
|
110
gcc/testsuite/gcc.dg/torture/pr53120.c
Normal file
110
gcc/testsuite/gcc.dg/torture/pr53120.c
Normal file
|
@ -0,0 +1,110 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-fno-tree-sra" } */
|
||||
typedef struct {
|
||||
unsigned int en : 1;
|
||||
unsigned int bit_order : 1;
|
||||
unsigned int scl_io : 1;
|
||||
unsigned int scl_inv : 1;
|
||||
unsigned int sda0_io : 1;
|
||||
unsigned int sda0_idle : 1;
|
||||
unsigned int sda1_io : 1;
|
||||
unsigned int sda1_idle : 1;
|
||||
unsigned int sda2_io : 1;
|
||||
unsigned int sda2_idle : 1;
|
||||
unsigned int sda3_io : 1;
|
||||
unsigned int sda3_idle : 1;
|
||||
unsigned int sda_sel : 2;
|
||||
unsigned int sen_idle : 1;
|
||||
unsigned int sen_inv : 1;
|
||||
unsigned int sen_sel : 2;
|
||||
unsigned int dummy1 : 14;
|
||||
} reg_gio_rw_i2c1_cfg;
|
||||
|
||||
typedef struct {
|
||||
unsigned int data0 : 8;
|
||||
unsigned int data1 : 8;
|
||||
unsigned int data2 : 8;
|
||||
unsigned int data3 : 8;
|
||||
} reg_gio_rw_i2c1_data;
|
||||
|
||||
typedef struct {
|
||||
unsigned int trf_bits : 6;
|
||||
unsigned int switch_dir : 6;
|
||||
unsigned int extra_start : 3;
|
||||
unsigned int early_end : 1;
|
||||
unsigned int start_stop : 1;
|
||||
unsigned int ack_dir0 : 1;
|
||||
unsigned int ack_dir1 : 1;
|
||||
unsigned int ack_dir2 : 1;
|
||||
unsigned int ack_dir3 : 1;
|
||||
unsigned int ack_dir4 : 1;
|
||||
unsigned int ack_dir5 : 1;
|
||||
unsigned int ack_bit : 1;
|
||||
unsigned int start_bit : 1;
|
||||
unsigned int freq : 2;
|
||||
unsigned int dummy1 : 5;
|
||||
} reg_gio_rw_i2c1_ctrl;
|
||||
|
||||
extern reg_gio_rw_i2c1_cfg reg_gio;
|
||||
extern reg_gio_rw_i2c1_data reg_data;
|
||||
extern int reg_start;
|
||||
extern reg_gio_rw_i2c1_ctrl reg_ctrl;
|
||||
|
||||
extern void foobar(void);
|
||||
extern void foo(int);
|
||||
extern void frob(unsigned int);
|
||||
extern void bar(int);
|
||||
extern void baz(void);
|
||||
|
||||
unsigned int f(int *devspec, unsigned int addr)
|
||||
{
|
||||
reg_gio_rw_i2c1_ctrl ctrl = {0};
|
||||
reg_gio_rw_i2c1_data data = {0};
|
||||
|
||||
foobar();
|
||||
|
||||
static int first = 1;
|
||||
|
||||
if (first) {
|
||||
reg_gio_rw_i2c1_cfg cfg = {0};
|
||||
first = 0;
|
||||
|
||||
foo(1);
|
||||
cfg.sda0_idle = 1;
|
||||
cfg.sda0_io = 0;
|
||||
cfg.scl_inv = 0;
|
||||
cfg.scl_io = 0;
|
||||
cfg.bit_order = 1;
|
||||
cfg.sda_sel = 0;
|
||||
cfg.sen_sel = 0;
|
||||
cfg.en = 1;
|
||||
reg_gio = cfg;
|
||||
}
|
||||
|
||||
ctrl.freq = 1;
|
||||
ctrl.start_bit = 0;
|
||||
ctrl.ack_bit = 1;
|
||||
ctrl.ack_dir0 = 0;
|
||||
ctrl.ack_dir1 = 0;
|
||||
ctrl.ack_dir2 = 0;
|
||||
ctrl.ack_dir3 = 1;
|
||||
ctrl.ack_dir4 = 0;
|
||||
ctrl.ack_dir5 = 0;
|
||||
ctrl.start_stop = 1;
|
||||
ctrl.early_end = 0;
|
||||
ctrl.extra_start = 2;
|
||||
ctrl.switch_dir = 8*3;
|
||||
ctrl.trf_bits = 8*4;
|
||||
reg_ctrl = ctrl;
|
||||
frob(0xac);
|
||||
data.data0 = devspec[1] & 192;
|
||||
data.data1 = addr;
|
||||
data.data2 = devspec[1] | 0x01;
|
||||
reg_data = data;
|
||||
reg_start = 1;
|
||||
bar(100);
|
||||
data = reg_data;
|
||||
baz();
|
||||
|
||||
return data.data3;
|
||||
}
|
Loading…
Add table
Reference in a new issue