From a15c4aac1255c7bca1abba6f68e7c48c6ef153a3 Mon Sep 17 00:00:00 2001 From: davidxl Date: Mon, 2 May 2011 05:30:59 +0000 Subject: [PATCH] new tests git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173242 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c | 61 ++++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c | 29 +++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 01eabe0ad55..695c8e61851 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-05-01 Xinliang David Li + + * gcc.dg/tree-ssa/integer-addr.c: New test. + * gcc.dg/tree-ssa/alias_bug.c: New test. + 2011-05-01 Jerry DeLisle PR libgfortran/48787 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c b/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c new file mode 100644 index 00000000000..64fef27874a --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c @@ -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" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c b/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c new file mode 100644 index 00000000000..b102a7a52e7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c @@ -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" } } */ -- 2.11.4.GIT