Member Function Annotation Missing

I have a set of global variable and member functions annotations in my code.

//test1.cpp

#define ANNOT1 attribute((annotate(“annot1”)))
#define ANNOT2 attribute((annotate(“annot2”)))

ANNOT1 int a;
ANNOT1 int b;

class A {

public:

ANNOT2
void hook() {
//does nothing;
}

void dummy() {
a = 0;
}

};

int main() {

A ob;
ob.dummy();

}

//test1.ll

; ModuleID = ‘test1.cpp’
target datalayout = “e-m:e-i64:64-f80:128-n8:16:32:64-S128”
target triple = “x86_64-pc-linux-gnu”

%class.A = type { i8 }

@a = global i32 0, align 4
@.str = private unnamed_addr constant [7 x i8] c"annot1\00", section “llvm.metadata”
@.str1 = private unnamed_addr constant [10 x i8] c"test1.cpp\00", section “llvm.metadata”
@b = global i32 0, align 4
@llvm.global.annotations = appending global [2 x { i8*, i8*, i8*, i32 }] [{ i8*, i8*, i8*, i32 } { i8* bitcast (i32* @a to i8*), i8* getelementptr inbounds ([7 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str1, i32 0, i32 0), i32 4 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32* @b to i8*), i8* getelementptr inbounds ([7 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str1, i32 0, i32 0), i32 5 }], section “llvm.metadata”

; Function Attrs: uwtable
define i32 @main() #0 {
%ob = alloca %class.A, align 1
call void @_ZN1A5dummyEv(%class.A* %ob)
ret i32 0
}

; Function Attrs: nounwind uwtable
define linkonce_odr void @_ZN1A5dummyEv(%class.A* %this) #1 align 2 {
%1 = alloca %class.A*, align 8
store %class.A* %this, %class.A** %1, align 8
%2 = load %class.A** %1
store i32 0, i32* @a, align 4
ret void
}

attributes #0 = { uwtable “less-precise-fpmad”=“false” “no-frame-pointer-elim”=“true” “no-frame-pointer-elim-non-leaf” “no-infs-fp-math”=“false” “no-nans-fp-math”=“false” “stack-protector-buffer-size”=“8” “unsafe-fp-math”=“false” “use-soft-float”=“false” }
attributes #1 = { nounwind uwtable “less-precise-fpmad”=“false” “no-frame-pointer-elim”=“true” “no-frame-pointer-elim-non-leaf” “no-infs-fp-math”=“false” “no-nans-fp-math”=“false” “stack-protector-buffer-size”=“8” “unsafe-fp-math”=“false” “use-soft-float”=“false” }

!llvm.ident = !{!0}

!0 = !{!“Ubuntu clang version 3.6.0-2ubuntu1~trusty1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)”}

Out of @a and @b, only @a is used. But in @llvm.global.annotations, both of them appear.
But in case of member function annotations, void A::hook() has completely disappeared from the IR. Because, member function is not called.

Can someone explain me why is this so different ?
I need void A::hook() to be available in IR. Is it possible or any other better solution ?