mirror of git://gcc.gnu.org/git/gcc.git
parent
5bfa2178f2
commit
b038e4379c
|
|
@ -1,3 +1,8 @@
|
|||
2011-05-01 Xinliang David Li <davidxl@google.com>
|
||||
|
||||
* gcc.dg/tree-ssa/integer-addr.c: New test.
|
||||
* gcc.dg/tree-ssa/alias_bug.c: New test.
|
||||
|
||||
2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libgfortran/48787
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-optimized" } */
|
||||
|
||||
typedef unsigned u32;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned char u8;
|
||||
struct biosregs {
|
||||
union {
|
||||
struct {
|
||||
u32 edi;
|
||||
u32 esi;
|
||||
u32 ebp;
|
||||
u32 _esp;
|
||||
u32 ebx;
|
||||
u32 edx;
|
||||
u32 ecx;
|
||||
u32 eax;
|
||||
u32 _fsgs;
|
||||
u32 _dses;
|
||||
u32 eflags;
|
||||
};
|
||||
struct {
|
||||
u16 di, hdi;
|
||||
u16 si, hsi;
|
||||
u16 bp, hbp;
|
||||
u16 _sp, _hsp;
|
||||
u16 bx, hbx;
|
||||
u16 dx, hdx;
|
||||
u16 cx, hcx;
|
||||
u16 ax, hax;
|
||||
u16 gs, fs;
|
||||
u16 es, ds;
|
||||
u16 flags, hflags;
|
||||
};
|
||||
struct {
|
||||
u8 dil, dih, edi2, edi3;
|
||||
u8 sil, sih, esi2, esi3;
|
||||
u8 bpl, bph, ebp2, ebp3;
|
||||
u8 _spl, _sph, _esp2, _esp3;
|
||||
u8 bl, bh, ebx2, ebx3;
|
||||
u8 dl, dh, edx2, edx3;
|
||||
u8 cl, ch, ecx2, ecx3;
|
||||
u8 al, ah, eax2, eax3;
|
||||
};
|
||||
};
|
||||
};
|
||||
void initregs(struct biosregs *regs);
|
||||
void intcall(u8 int_no, const struct biosregs *ireg, struct biosregs *oreg);
|
||||
static u32 *const gp = (u32*) 0x32;
|
||||
void keyboard_set_repeat(void)
|
||||
{
|
||||
struct biosregs ireg;
|
||||
*gp = 10;
|
||||
initregs(&ireg);
|
||||
ireg.ax = 0x0305;
|
||||
intcall(0x16, &ireg, ((void *)0));
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "ireg.*ax" 1 "optimized"} } */
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "optimized" } } */
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized -fno-strict-aliasing" } */
|
||||
/* Test with fixed address */
|
||||
static int *foo = (int *) (unsigned long) 0x7800000;
|
||||
|
||||
int func(void) __attribute__ ((noinline));
|
||||
|
||||
extern int bar(void);
|
||||
|
||||
int func(void)
|
||||
{
|
||||
if (*foo) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int foobar(void)
|
||||
{
|
||||
|
||||
if (func()) {
|
||||
*foo = 1;
|
||||
}
|
||||
return func();
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "= func" 2 "optimized" } } */
|
||||
/* { dg-final { cleanup-tree-dump "optimized" } } */
|
||||
Loading…
Reference in New Issue