about summary refs log tree commit diff homepage
path: root/test/Feature
diff options
context:
space:
mode:
Diffstat (limited to 'test/Feature')
-rw-r--r--test/Feature/Alias.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/test/Feature/Alias.c b/test/Feature/Alias.c
index 29cc08d7..e1f58901 100644
--- a/test/Feature/Alias.c
+++ b/test/Feature/Alias.c
@@ -6,6 +6,10 @@
 
 #include <assert.h>
 
+// alias with bitcast
+// NOTE: this does not have to be before b is known
+extern short d __attribute__((alias("b")));
+
 // alias for global
 int b = 52;
 extern int a __attribute__((alias("b")));
@@ -18,13 +22,26 @@ extern int foo2() __attribute__((alias("foo")));
 int __foo() { return 52; }
 extern int foo() __attribute__((alias("__foo")));
 
+// alias without bitcast
+extern int foo3(void) __attribute__((alias("__foo")));
+
 int *c = &a;
 
 int main() {
   assert(a == 52);
+  assert(*c == 52);
+  assert((int)d == 52);
+
+  assert(c == &b);
+  assert((int*)&d != &b);
+
   assert(foo() == 52);
   assert(foo2() == 52);
-  assert(*c == 52);
+  assert(foo3() == 52);
+
+  assert(foo != __foo);
+  assert(foo2 != __foo);
+  assert(foo3 == __foo);
 
   return 0;
 }