I am looking at LLVM libraries, and I realized that Clang emits LLVM IR modules, adding this metadata:
!llvm.module.flags = !{!0} !llvm.ident = !{!1} !0 = !{i32 1, !"PIC Level", i32 2} !1 = !{!"Apple LLVM version 7.3.0 (clang-703.0.31)"}
Then I found out that calling the setPICLevel() method in a module gets a similar result:
!0 = !{i32 1, !"PIC Level", i32 0}
Thus, all !0 metadata refers to the PIC level.
I searched it on the Internet, but found nothing. What is this PIC level and what does it indicate?
source share