Quick help for the implementation on strict aliasing support

Hi everyone,

It is regarding type-based alias analysis on LLVM, and I am planning
to extend the simple type information that Clang already supports when
provided with some options like
  "clang -O2 -emit-llvm -S foo.cpp -o foo.bc -mllvm -enable-tbaa".

The generated type information by clang looks like:

  !0 = metadata !{metadata !"int", metadata !1}
  !1 = metadata !{metadata !"omnipotent char", metadata !2}
  !2 = metadata !{metadata !"Simple C/C++ TBAA", null}

Can someone briefly point out where to start to extend such type
information in Clang?