2018-03-08 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr55142-2.c
blobef642bb7782f6887ec4e20159a25a03543749e5a
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-require-effective-target maybe_x32 } */
3 /* { dg-require-effective-target fpic } */
4 /* { dg-options "-O3 -mx32 -maddress-mode=long -fpic" } */
5 /* { dg-final { scan-assembler-not "movl\[\\t \]*%.*,\[\\t \]*-1073742592\\(%r(.x|.i|.p|\[1-9\]*)\\)" } } */
7 typedef int int32_t;
8 typedef unsigned int uint32_t;
9 typedef uint32_t Elf32_Word;
10 typedef int32_t Elf32_Sword;
11 typedef uint32_t Elf32_Addr;
12 typedef struct {
13 Elf32_Sword d_tag;
14 union {
15 Elf32_Word d_val;
16 Elf32_Addr d_ptr;
17 } d_un;
18 } Elf32_Dyn;
19 struct link_map {
20 Elf32_Dyn *l_ld;
21 Elf32_Dyn *l_info[34 + 16 + 3 + 12 + 11];
23 void
24 elf_get_dynamic_info (struct link_map *l)
26 Elf32_Dyn *dyn = l->l_ld;
27 Elf32_Dyn **info = l->l_info;
28 typedef Elf32_Word d_tag_utype;
29 while (dyn->d_tag != 0) {
30 if ((d_tag_utype) (0x6ffffeff - dyn->d_tag) < 11)
31 info[(0x6ffffeff - dyn->d_tag) + 34 + 16 + 3 + 12] = dyn;
32 ++dyn;