blob: a4bea0e06cd885945a91490c6c292b460de79cd9 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
Daniel Dunbar3c827a72008-08-05 23:31:02 +00002
Mike Stumpc36541e2009-07-21 20:52:43 +00003int x() { return 1; }
Daniel Dunbar3c827a72008-08-05 23:31:02 +00004
Daniel Dunbar47d1e822009-11-11 03:48:26 +00005// CHECK: [[retval:%.*]] = alloca i32
6// CHECK: store i32 1, i32* [[retval]]
7// CHECK: [[load:%.*]] = load i32* [[retval]]
8// CHECK: ret i32 [[load]]
Edward O'Callaghan07e72fd2009-10-26 20:49:20 +00009
10
Daniel Dunbar3c827a72008-08-05 23:31:02 +000011int f() __attribute__((weak, alias("x")));
12
13/* Test that we link to the alias correctly instead of making a new
14 forward definition. */
15int f();
16int h() {
17 return f();
18}
Edward O'Callaghan07e72fd2009-10-26 20:49:20 +000019
Daniel Dunbar47d1e822009-11-11 03:48:26 +000020// CHECK: [[retval:%.*]] = alloca i32
21// CHECK: [[call:%.*]] = call i32 (...)* @f()
22// CHECK: store i32 [[call]], i32* [[retval]]
23// CHECK: [[load:%.*]] = load i32* [[retval]]
24// CHECK: ret i32 [[load]]
Edward O'Callaghan07e72fd2009-10-26 20:49:20 +000025