1b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -verify %s
2b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
3b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f0() {}
4b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun0(void) __attribute((alias("f0")));
5b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
6b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f1() {}
7b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun1() {} // expected-note {{previous definition}}
8b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun1(void) __attribute((alias("f1"))); // expected-error {{redefinition of 'fun1'}}
9b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
10b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f2() {}
11b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun2(void) __attribute((alias("f2"))); // expected-note {{previous definition}}
12b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun2() {} // expected-error {{redefinition of 'fun2'}}
13b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
14b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f3() {}
15b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun3(void) __attribute((alias("f3"))); // expected-note {{previous definition}}
16b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun3(void) __attribute((alias("f3"))); // expected-error {{redefinition of 'fun3'}}
17b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
18b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f4() {}
19b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun4(void) __attribute((alias("f4")));
20b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid fun4(void);
21b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
22b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola// FIXME: We should produce a special case error for this.
23b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid f5() {}
24b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolavoid __attribute((alias("f5"))) fun5(void) {} // expected-error {{redefinition of 'fun5'}} // expected-note {{previous definition}}
25b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
26b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint v1;
27b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var1 __attribute((alias("v1"))); // expected-note {{previous definition}}
28b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var1 __attribute((alias("v1"))); // expected-error {{redefinition of 'var1'}}
29b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
30b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint v2;
31b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var2 = 2; // expected-note {{previous definition}}
32b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var2 __attribute((alias("v2"))); // expected-error {{redefinition of 'var2'}}
33b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
34b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint v3;
35b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var3 __attribute((alias("v3"))); // expected-note {{previous definition}}
36b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var3 = 2; // expected-error {{redefinition of 'var3'}}
37b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
38b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint v4;
39b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var4; // expected-note {{previous definition}}
40b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var4 __attribute((alias("v4"))); // expected-error {{alias definition of 'var4' after tentative definition}}
41b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindola
42b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint v5;
43b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var5 __attribute((alias("v5"))); // expected-note {{previous definition}}
44b1c0e204046b72828e513bad369ab03252b2c42eRafael Espindolaint var5; // expected-error {{tentative definition of 'var5' after alias definition}}
45