1 /* Verify that constants in memory, referenced only by dead code,
2 are not emitted to the object file.
3 FIXME: Not presently possible to apply -pedantic to code with
4 complex constants in it. The __extension__ should shut up the
5 warning but doesn't. (Hard to fix -- the lexer is not aware of
6 the parser's state.) */
8 /* { dg-do compile } */
9 /* { dg-options "-O2 -std=c99" } */
10 /* This test fails on all processors where we use a block move to
11 initialize "S" in test2. The RTL optimizers are not clever enough
12 to eliminate the block move, so the constant gets emitted.
13 Currently known targets with this problem: all ARM; PA32 ("hppa*.*"
14 matches "hppa2.0w" but not "hppa64"); PPC if string instructions
15 are enabled (notably under AIX); Xtensa. */
16 /* { dg-final { scan-assembler-not "L\\\$?C\[^A-Z\]" { xfail arm-*-* strongarm-*-* xscale-*-* hppa-*-* hppa*.*-*-* powerpc*-*-aix* xtensa-*-* } } } */
18 #define I (__extension__ 1.0iF)
20 struct S
{ int a
; double b
[2]; void *c
; };
22 extern void use_str(const char *);
23 extern void use_S(const struct S
*);
24 extern void use_cplx(__complex__
double);
27 returns_23(void) { return 23; }
32 if (returns_23() == 23)
35 use_str("waltz, nymph, for quick jigs vex bud");
36 use_S(&(const struct S
){12, {3.1415, 2.1828}, 0 });
37 use_cplx(3.1415 + 2.1828*I
);
43 const char *str
= "pack my box with five dozen liquor jugs";
44 const struct S S
= { 23, { 1.414, 1.618 }, 0 };
45 const __complex__
double cplx
= 1.414 + 1.618*I
;
47 if (returns_23() == 23)