static-init.c revision 1eb4433ac451dc16f4133a88af2d002ac26c58ef
1c219a1579c200c62d925653336e72d9d2f6c4cb7Eli Friedman// RUN: clang-cc -triple i386-pc-linux-gnu -fsyntax-only -verify %s
2578a97249c10eb83f25b408de1edfb70f5a4233cEli Friedman
3578a97249c10eb83f25b408de1edfb70f5a4233cEli Friedman#include <stdint.h>
4578a97249c10eb83f25b408de1edfb70f5a4233cEli Friedman
51a86b33c1870fee08d281c9f07ac1280195a7faeAnders Carlssonstatic int f = 10;
6d8803632d248a360a040ff03eff1162988058036Chris Lattnerstatic int b = f; // expected-error {{initializer element is not a compile-time constant}}
7c1cc6dccd42b91a2ebb397415940da91dbf36103Eli Friedman
841826bb59d2ef5e8c8a4a0cd2b06a7a011b67b4dEli Friedmanfloat r  = (float) (intptr_t) &r; // expected-error {{initializer element is not a compile-time constant}}
9578a97249c10eb83f25b408de1edfb70f5a4233cEli Friedmanintptr_t s = (intptr_t) &s;
10c1cc6dccd42b91a2ebb397415940da91dbf36103Eli Friedman_Bool t = &t;
11839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes
12839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes
13839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopesunion bar {
141eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  int i;
15839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes};
16839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes
17839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopesstruct foo {
181eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  unsigned ptr;
19839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes};
20839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopes
21839508150a7a595b6172217eeddc4d024fc201c5Nuno Lopesunion bar u[1];
22578a97249c10eb83f25b408de1edfb70f5a4233cEli Friedmanstruct foo x = {(intptr_t) u}; // no-error
23ff77645058c5d56b4f3273e27f7492c78288825eNuno Lopesstruct foo y = {(char) u}; // expected-error {{initializer element is not a compile-time constant}}
24