LLVM
2021-07-05 本文已影响0人
捡书
Mac安装llvm
➜ brew install llvm
软链接相应工具(未列出的可以自己去找一下):
➜ sudo ln -s /usr/local/Cellar/llvm/12.0.0_1/bin/opt /usr/local/bin/opt
➜ sudo ln -s /usr/local/Cellar/llvm/12.0.0_1/bin/llvm-as /usr/local/bin/llvm-as
➜ sudo ln -s /usr/local/Cellar/llvm/12.0.0_1/bin/llc /usr/local/bin/llc
➜ sudo ln -s /usr/local/Cellar/llvm/12.0.0_1/bin/llvm-dis /usr/local/bin/llvm-dis
C转LLVM IR
➜ cat test.c
int main() {
int a = 1;
int b = 2;
return a+b;
}
➜ clang -emit-llvm -S test.c -o 1.ll
➜ cat 1.ll
; ModuleID = 'test.c'
source_filename = "test.c"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx11.0.0"
; Function Attrs: noinline nounwind optnone ssp uwtable
define i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i32, align 4
store i32 0, i32* %1, align 4
store i32 1, i32* %2, align 4
store i32 2, i32* %3, align 4
%4 = load i32, i32* %2, align 4
%5 = load i32, i32* %3, align 4
%6 = add nsw i32 %4, %5
ret i32 %6
}
attributes #0 = { noinline nounwind optnone ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "darwin-stkchk-strong-link" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "probe-stack"="___chkstk_darwin" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 11, i32 1]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{!"Apple clang version 12.0.0 (clang-1200.0.32.29)"}
LLVM IR转bitcode
➜ llvm-as 1.ll -o 1.bc
➜ hexdump -C 1.bc
00000000 de c0 17 0b 00 00 00 00 14 00 00 00 68 09 00 00 |............h...|
00000010 07 00 00 01 42 43 c0 de 35 14 00 00 05 00 00 00 |....BC..5.......|
00000020 62 0c 30 24 4a 59 be 66 6d fb b4 4f 0b 51 80 4c |b.0$JY.fm..O.Q.L|
00000030 01 00 00 00 21 0c 00 00 1e 02 00 00 0b 02 21 00 |....!.........!.|
00000040 02 00 00 00 16 00 00 00 07 81 23 91 41 c8 04 49 |..........#.A..I|
00000050 06 10 32 39 92 01 84 0c 25 05 08 19 1e 04 8b 62 |..29....%......b|
00000060 80 0c 45 02 42 92 0b 42 64 10 32 14 38 08 18 4b |..E.B..Bd.2.8..K|
00000070 0a 32 32 88 48 70 c4 21 23 44 12 87 8c 10 41 92 |.22.Hp.!#D....A.|
00000080 02 64 c8 08 b1 14 20 43 46 88 20 c9 01 32 32 84 |.d.... CF. ..22.|
00000090 18 2a 28 2a 90 31 7c b0 5c 91 20 c3 c8 00 00 00 |.*(*.1|.\. .....|
000000a0 89 20 00 00 0b 00 00 00 32 22 c8 08 20 64 85 04 |. ......2".. d..|
000000b0 93 21 a4 84 04 93 21 e3 84 a1 90 14 12 4c 86 8c |.!....!......L..|
000000c0 0b 84 64 4c 10 1c 73 04 60 50 02 50 06 02 52 00 |..dL..s.`P.P..R.|
000000d0 84 11 00 00 51 18 00 00 b6 00 00 00 1b fc 27 f8 |....Q.........'.|
000000e0 ff ff ff ff 01 70 00 09 28 03 40 03 c2 80 18 87 |.....p..(.@.....|
000000f0 77 90 07 79 28 87 71 a0 07 76 c8 87 36 90 87 77 |w..y(.q..v..6..w|
00000100 a8 07 77 20 87 72 20 87 36 20 87 74 b0 87 74 20 |..w .r .6 .t..t |
00000110 87 72 68 83 79 88 07 79 a0 87 36 30 07 78 68 83 |.rh.y..y..60.xh.|
00000120 76 08 07 7a 40 07 c0 1c c2 81 1d e6 a1 1c 80 81 |v..z@...........|
00000130 1c c2 41 1e ee 21 1d dc a1 0d e6 81 1e d6 61 1c |..A..!........a.|
00000140 d0 61 1d da 60 1e e8 41 1e de c1 1d ce a1 0d d8 |.a..`..A........|
00000150 21 1d dc 61 1d 00 82 1c d2 61 1e c2 41 1c d8 a1 |!..a.....a..A...|
00000160 1c da 80 1e c2 21 1d d8 a1 0d c6 21 1c d8 81 1d |.....!.....!....|
00000170 e6 01 30 87 70 60 87 79 28 07 80 30 07 79 08 87 |..0.p`.y(..0.y..|
00000180 76 28 87 36 80 87 77 48 07 77 a0 87 72 90 07 20 |v(.6..wH.w..r.. |
00000190 1c d8 81 1d 00 82 1d ca 61 1e e6 a1 0d e0 41 1e |........a.....A.|
000001a0 ca 61 1c d2 61 1e ca a1 0d cc 01 1e da 21 1c c8 |.a..a........!..|
000001b0 01 30 87 70 60 87 79 28 07 80 68 87 74 70 87 36 |.0.p`.y(..h.tp.6|
000001c0 60 87 72 38 87 70 60 87 36 b0 87 72 18 07 7a 78 |`.r8.p`.6..r..zx|
000001d0 07 79 68 83 7b 48 07 72 a0 07 74 00 e0 00 20 dc |.yh.{H.r..t... .|
000001e0 e1 1d da 20 1d dc c1 1c e6 a1 0d cc 01 1e da a0 |... ............|
000001f0 1d c2 81 1e d0 01 30 87 70 60 87 79 28 07 80 70 |......0.p`.y(..p|
00000200 87 77 68 03 75 a8 87 76 80 87 36 a0 87 70 10 07 |.wh.u..v..6..p..|
00000210 76 28 87 79 00 cc 21 1c d8 61 1e ca 01 20 dc e1 |v(.y..!..a... ..|
00000220 1d da c0 1d c2 c1 1d e6 a1 0d cc 01 1e da a0 1d |................|
00000230 c2 81 1e d0 01 30 87 70 60 87 79 28 07 80 70 87 |.....0.p`.y(..p.|
00000240 77 68 83 79 48 87 73 70 87 72 20 87 36 d0 87 72 |wh.yH.sp.r .6..r|
00000250 90 87 77 98 87 36 30 07 78 68 83 76 08 07 7a 40 |..w..60.xh.v..z@|
00000260 07 c0 1c c2 81 1d e6 a1 1c 00 c2 1d de a1 0d e8 |................|
00000270 41 1e c2 01 1e e0 21 1d dc e1 1c da a0 1d c2 81 |A.....!.........|
00000280 1e d0 01 30 87 70 60 87 79 28 07 80 80 07 79 78 |...0.p`.y(....yx|
00000290 07 71 28 87 36 98 07 7a 08 87 71 58 07 e0 17 7e |.q(.6..z..qX...~|
000002a0 e1 17 c6 01 1d d6 61 1e e8 61 1d 7e 81 1c c2 41 |......a..a.~...A|
000002b0 1e ee 21 1d dc 01 20 e6 81 1e c2 61 1c d6 a1 0d |..!... ....a....|
000002c0 e0 41 1e de 81 1e ca 61 1c e8 e1 1d e4 a1 0d c4 |.A.....a........|
000002d0 a1 1e cc c1 1c ca 41 1e da 60 1e d2 41 1f ca 01 |......A..`..A...|
000002e0 c0 03 80 a0 87 70 90 87 73 28 07 7a 68 83 71 80 |.....p..s(.zh.q.|
000002f0 87 7a 00 e0 a1 1c dc 41 1e f2 c1 1d 00 82 1e c2 |.z.....A........|
00000300 41 1e ce a1 1c e8 a1 0d cc a1 1c c2 81 1e ea 41 |A..............A|
00000310 1e ca 61 1e 80 35 18 07 7c 88 03 3b 60 83 35 18 |..a..5..|..;`.5.|
00000320 07 7c c0 03 36 58 03 73 c0 87 79 90 07 36 58 83 |.|..6X.s..y..6X.|
00000330 76 68 07 7c 60 83 35 98 87 70 40 07 73 60 83 35 |vh.|`.5..p@.s`.5|
00000340 98 87 79 28 07 36 58 83 79 98 87 72 90 03 36 58 |..y(.6X.y..r..6X|
00000350 83 79 98 87 72 98 03 36 58 83 79 98 87 72 a0 03 |.y..r..6X.y..r..|
00000360 37 88 03 36 58 83 79 98 87 79 28 87 39 60 83 35 |7..6X.y..y(.9`.5|
00000370 c0 07 3c b8 03 80 a8 07 77 98 87 70 30 87 72 68 |..<.....w..p0.rh|
00000380 03 73 80 87 36 68 87 70 a0 07 74 00 cc 21 1c d8 |.s..6h.p..t..!..|
00000390 61 1e ca 01 20 ea 61 1e ca a1 0d e6 e1 1d cc 81 |a... .a.........|
000003a0 1e da c0 1c d8 e1 1d c2 81 1e 00 73 08 07 76 98 |...........s..v.|
000003b0 87 72 00 00 49 18 00 00 01 00 00 00 13 82 00 00 |.r..I...........|
000003c0 13 32 7c c0 03 3b f8 05 3b a0 83 36 08 07 78 80 |.2|..;..;..6..x.|
000003d0 07 76 28 87 36 68 87 70 18 87 77 98 07 7c 88 83 |.v(.6h.p..w..|..|
000003e0 38 70 03 38 70 03 38 d8 60 0a e5 d0 06 ed a0 07 |8p.8p.8.`.......|
000003f0 ef d0 06 f0 20 07 77 00 07 7a 30 07 72 a0 07 73 |.... .w..z0.r..s|
00000400 20 07 6d 00 0f 72 70 07 71 a0 07 73 20 07 7a 30 | .m..rp.q..s .z0|
00000410 07 72 d0 06 f0 20 07 77 20 07 7a 60 07 74 a0 07 |.r... .w .z`.t..|
00000420 76 40 07 6d 90 0e 76 40 07 7a 60 07 74 d0 06 e6 |v@.m..v@.z`.t...|
00000430 80 07 70 a0 07 71 20 07 78 d0 06 ee 80 07 7a 10 |..p..q .x.....z.|
00000440 07 76 a0 07 73 20 07 7a 60 07 74 d0 06 b3 10 07 |.v..s .z`.t.....|
00000450 72 80 07 1a 21 0c 69 4c 84 34 f9 c2 90 0a 20 02 |r...!.iL.4.... .|
00000460 00 00 02 00 00 00 00 00 00 00 00 00 02 90 d8 20 |............... |
00000470 50 54 44 00 00 20 0b 04 07 00 00 00 32 1e 98 0c |PTD.. ......2...|
00000480 19 11 4c 90 8c 09 26 47 c6 04 43 42 11 10 c7 12 |..L...&G..CB....|
00000490 96 80 50 02 85 50 0e 00 b1 18 00 00 97 00 00 00 |..P..P..........|
000004a0 33 08 80 1c c4 e1 1c 66 14 01 3d 88 43 38 84 c3 |3......f..=.C8..|
000004b0 8c 42 80 07 79 78 07 73 98 71 0c e6 00 0f ed 10 |.B..yx.s.q......|
000004c0 0e f4 80 0e 33 0c 42 1e c2 c1 1d ce a1 1c 66 30 |....3.B.......f0|
000004d0 05 3d 88 43 38 84 83 1b cc 03 3d c8 43 3d 8c 03 |.=.C8.....=.C=..|
000004e0 3d cc 78 8c 74 70 07 7b 08 07 79 48 87 70 70 07 |=.x.tp.{..yH.pp.|
000004f0 7a 70 03 76 78 87 70 20 87 19 cc 11 0e ec 90 0e |zp.vx.p ........|
00000500 e1 30 0f 6e 30 0f e3 f0 0e f0 50 0e 33 10 c4 1d |.0.n0.....P.3...|
00000510 de 21 1c d8 21 1d c2 61 1e 66 30 89 3b bc 83 3b |.!..!..a.f0.;..;|
00000520 d0 43 39 b4 03 3c bc 83 3c 84 03 3b cc f0 14 76 |.C9..<..<..;...v|
00000530 60 07 7b 68 07 37 68 87 72 68 07 37 80 87 70 90 |`.{h.7h.rh.7..p.|
00000540 87 70 60 07 76 28 07 76 f8 05 76 78 87 77 80 87 |.p`.v(.v..vx.w..|
00000550 5f 08 87 71 18 87 72 98 87 79 98 81 2c ee f0 0e |_..q..r..y..,...|
00000560 ee e0 0e f5 c0 0e ec 30 03 62 c8 a1 1c e4 a1 1c |.......0.b......|
00000570 cc a1 1c e4 a1 1c dc 61 1c ca 21 1c c4 81 1d ca |.......a..!.....|
00000580 61 06 d6 90 43 39 c8 43 39 98 43 39 c8 43 39 b8 |a...C9.C9.C9.C9.|
00000590 c3 38 94 43 38 88 03 3b 94 c3 2f bc 83 3c fc 82 |.8.C8..;../..<..|
000005a0 3b d4 03 3b b0 c3 0c c7 69 87 70 58 87 72 70 83 |;..;....i.pX.rp.|
000005b0 74 68 07 78 60 87 74 18 87 74 a0 87 19 ce 53 0f |th.x`.t..t....S.|
000005c0 ee 00 0f f2 50 0e e4 90 0e e3 40 0f e1 20 0e ec |....P.....@.. ..|
000005d0 50 0e 33 20 28 1d dc c1 1e c2 41 1e d2 21 1c dc |P.3 (.....A..!..|
000005e0 81 1e dc e0 1c e4 e1 1d ea 01 1e 66 18 51 38 b0 |...........f.Q8.|
000005f0 43 3a 9c 83 3b cc 50 24 76 60 07 7b 68 07 37 60 |C:..;.P$v`.{h.7`|
00000600 87 77 78 07 78 98 51 4c f4 90 0f f0 50 0e 33 1e |.wx.x.QL....P.3.|
00000610 6a 1e ca 61 1c e8 21 1d de c1 1d 7e 01 1e e4 a1 |j..a..!....~....|
00000620 1c cc 21 1d f0 61 06 54 85 83 38 cc c3 3b b0 43 |..!..a.T..8..;.C|
00000630 3d d0 43 39 fc c2 3c e4 43 3b 88 c3 3b b0 c3 8c |=.C9..<.C;..;...|
00000640 c5 0a 87 79 98 87 77 18 87 74 08 07 7a 28 07 72 |...y..w..t..z(.r|
00000650 98 81 5c e3 10 0e ec c0 0e e5 50 0e f3 30 23 c1 |..\.......P..0#.|
00000660 d2 41 1e e4 e1 17 d8 e1 1d de 01 1e 66 48 19 3b |.A..........fH.;|
00000670 b0 83 3d b4 83 1b 84 c3 38 8c 43 39 cc c3 3c b8 |..=.....8.C9..<.|
00000680 c1 39 c8 c3 3b d4 03 3c cc 48 b4 71 08 07 76 60 |.9..;..<.H.q..v`|
00000690 07 71 08 87 71 58 87 19 db c6 0e ec 60 0f ed e0 |.q..qX......`...|
000006a0 06 f0 20 0f e5 30 0f e5 20 0f f6 50 0e 6e 10 0e |.. ..0.. ..P.n..|
000006b0 e3 30 0e e5 30 0f f3 e0 06 e9 e0 0e e4 50 0e f8 |.0..0........P..|
000006c0 30 23 e2 ec 61 1c c2 81 1d d8 e1 17 ec 21 1d e6 |0#..a........!..|
000006d0 21 1d c4 21 1d d8 21 1d e8 21 1f 66 20 9d 3b bc |!..!..!..!.f .;.|
000006e0 43 3d b8 03 39 94 83 39 cc 58 bc 70 70 07 77 78 |C=..9..9.X.pp.wx|
000006f0 07 7a 08 07 7a 48 87 77 70 07 00 00 79 20 00 00 |.z..zH.wp...y ..|
00000700 31 00 00 00 72 1e 48 20 43 88 0c 19 09 72 32 48 |1...r.H C....r2H|
00000710 20 23 81 8c 91 91 d1 44 a0 10 28 64 3c 31 32 42 | #.....D..(d<12B|
00000720 8e 90 21 a3 48 10 b1 00 8b 92 bc 01 53 44 4b 20 |..!.H.......SDK |
00000730 56 65 72 73 69 6f 6e 77 63 68 61 72 5f 73 69 7a |Versionwchar_siz|
00000740 65 50 49 43 20 4c 65 76 65 6c 41 70 70 6c 65 20 |ePIC LevelApple |
00000750 63 6c 61 6e 67 20 76 65 72 73 69 6f 6e 20 31 32 |clang version 12|
00000760 2e 30 2e 30 20 28 63 6c 61 6e 67 2d 31 32 30 30 |.0.0 (clang-1200|
00000770 2e 30 2e 33 32 2e 32 39 29 00 00 00 23 08 40 30 |.0.32.29)...#.@0|
00000780 82 40 08 23 08 c0 30 82 00 10 23 08 40 31 c3 50 |.@.#..0...#.@1.P|
00000790 04 c6 0c c3 21 20 33 0c c9 50 cc 10 10 32 12 98 |....! 3..P...2..|
000007a0 a0 8c d8 d8 ec da 5c da de c8 ea d8 ca 5c cc d8 |......\......\..|
000007b0 c2 ce e6 46 19 12 65 49 85 8d cd ae cd 25 8d ac |...F..eI.....%..|
000007c0 cc 8d 6e 94 80 01 00 00 a9 18 00 00 19 00 00 00 |..n.............|
000007d0 0b 0a 72 28 87 77 80 07 7a 58 70 98 43 3d b8 c3 |..r(.w..zXp.C=..|
000007e0 38 b0 43 39 d0 c3 82 e6 1c c6 a1 0d e8 41 1e c2 |8.C9.........A..|
000007f0 c1 1d e6 21 1d e8 21 1d de c1 1d 16 34 e3 60 0e |...!..!.....4.`.|
00000800 e7 50 0f e1 20 0f e4 40 0f e1 20 0f e7 50 0e f4 |.P.. ..@.. ..P..|
00000810 b0 80 81 07 79 28 87 70 60 07 76 78 87 71 08 07 |....y(.p`.vx.q..|
00000820 7a 28 07 72 58 70 9c c3 38 b4 01 3b a4 83 3d 94 |z(.rXp..8..;..=.|
00000830 03 00 00 00 d1 10 00 00 06 00 00 00 07 cc 3c a4 |..............<.|
00000840 83 3b 9c 03 3b 94 03 3d a0 83 3c 94 43 38 90 c3 |.;..;..=..<.C8..|
00000850 01 00 00 00 61 20 00 00 10 00 00 00 13 04 41 2c |....a ........A,|
00000860 10 00 00 00 01 00 00 00 84 11 00 00 33 11 00 30 |............3..0|
00000870 8c c2 4c 04 00 0c a3 30 13 01 00 c3 28 0c 1b 10 |..L....0....(...|
00000880 03 31 00 c3 06 84 70 0c c0 b0 01 11 24 03 40 02 |.1....p.....$.@.|
00000890 06 09 18 28 04 20 b0 01 00 00 00 00 71 20 00 00 |...(. ......q ..|
000008a0 03 00 00 00 32 0e 10 22 84 00 90 04 00 00 00 00 |....2.."........|
000008b0 00 00 00 00 65 0c 00 00 1f 00 00 00 12 03 94 f0 |....e...........|
000008c0 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 |................|
000008d0 4c 00 00 00 01 00 00 00 58 00 00 00 00 00 00 00 |L.......X.......|
000008e0 58 00 00 00 01 00 00 00 70 00 00 00 00 00 00 00 |X.......p.......|
000008f0 0a 00 00 00 19 00 00 00 23 00 00 00 06 00 00 00 |........#.......|
00000900 04 00 00 00 00 00 00 00 70 00 00 00 00 00 00 00 |........p.......|
00000910 00 00 00 00 01 00 00 00 00 00 00 00 29 00 00 00 |............)...|
00000920 05 00 00 00 00 00 00 00 04 00 00 00 ff ff ff ff |................|
00000930 00 24 00 00 00 00 00 00 5d 0c 00 00 0f 00 00 00 |.$......].......|
00000940 12 03 94 6e 00 00 00 00 6d 61 69 6e 31 32 2e 30 |...n....main12.0|
00000950 2e 30 78 38 36 5f 36 34 2d 61 70 70 6c 65 2d 6d |.0x86_64-apple-m|
00000960 61 63 6f 73 78 31 31 2e 30 2e 30 74 65 73 74 2e |acosx11.0.0test.|
00000970 63 5f 6d 61 69 6e 00 00 00 00 00 00 00 00 00 00 |c_main..........|
00000980
bitcode转为目标平台汇编
➜ llc 1.bc -o 1.s
➜ cat 1.s
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 11, 0 sdk_version 11, 1
.globl _main ## -- Begin function main
.p2align 4, 0x90
_main: ## @main
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $12, %rsp
movl $0, -12(%rbp)
movl $1, -8(%rbp)
movl $2, -4(%rbp)
movl -8(%rbp), %eax
addl -4(%rbp), %eax
addq $12, %rsp
popq %rbp
retq
.cfi_endproc
## -- End function
.subsections_via_symbols
也可以使用clang:
➜ clang -S 1.bc -o 1.s -fomit-frame-pointer
➜ cat 1.s
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 11, 0 sdk_version 11, 1
.globl _main ## -- Begin function main
.p2align 4, 0x90
_main: ## @main
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movl $0, -4(%rbp)
movl $1, -8(%rbp)
movl $2, -12(%rbp)
movl -8(%rbp), %eax
addl -12(%rbp), %eax
popq %rbp
retq
.cfi_endproc
## -- End function
.subsections_via_symbols
bitcode转为LLVM IR
➜ llvm-dis 1.bc -o 1.ll
➜ cat 1.ll
; ModuleID = '1.bc'
source_filename = "test.c"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx11.0.0"
; Function Attrs: noinline nounwind optnone ssp uwtable
define i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i32, align 4
store i32 0, i32* %1, align 4
store i32 1, i32* %2, align 4
store i32 2, i32* %3, align 4
%4 = load i32, i32* %2, align 4
%5 = load i32, i32* %3, align 4
%6 = add nsw i32 %4, %5
ret i32 %6
}
attributes #0 = { noinline nounwind optnone ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "darwin-stkchk-strong-link" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "probe-stack"="___chkstk_darwin" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 11, i32 1]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{!"Apple clang version 12.0.0 (clang-1200.0.32.29)"}