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