
Previously, annotations were only emitted for function definitions. With this change annotations are also emitted for declarations. Also, emitting function annotations is now deferred until the end so that the most up to date declaration is used which will have any inherited annotations.
17 lines
534 B
C
17 lines
534 B
C
// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
|
|
|
|
// Test annotation attributes are still emitted when the function is used before
|
|
// it is defined with annotations.
|
|
|
|
void foo(void);
|
|
void *xxx = (void*)foo;
|
|
void __attribute__((annotate("bar"))) foo() {}
|
|
|
|
// CHECK: target triple
|
|
// CHECK-DAG: private unnamed_addr constant [4 x i8] c"bar\00", section "llvm.metadata"
|
|
|
|
// CHECK: @llvm.global.annotations = appending global [1 x { ptr, ptr, ptr, i32, ptr }] [{
|
|
// CHECK-SAME: { ptr @foo,
|
|
// CHECK-SAME: }], section "llvm.metadata"
|
|
|