brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.0 KiB · fb87269 Raw
720 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt < %s -passes='function(lower-allow-check)' -S | FileCheck %s --check-prefixes=NOPROFILE3; RUN: opt < %s -passes='function(lower-allow-check)' -lower-allow-check-random-rate=0 -S | FileCheck %s --check-prefixes=NONE4; RUN: opt < %s -passes='function(lower-allow-check)' -lower-allow-check-random-rate=1 -S | FileCheck %s --check-prefixes=ALL5;6; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check<cutoffs[22]=990000>)' -S | FileCheck %s --check-prefixes=HOT997; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check<cutoffs[22]=700000>)' -S | FileCheck %s --check-prefixes=HOT708; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check<cutoffs[22]=990000>)' -lower-allow-check-random-rate=0 -S | FileCheck %s --check-prefixes=NONE999; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check<cutoffs[22]=700000>)' -lower-allow-check-random-rate=1 -S | FileCheck %s --check-prefixes=ALL7010;11; -lower-allow-check-percentile-cutoff is deprecated and will be removed in the future;12; use the cutoffs parameter to the lower-allow-check pass, as shown above.13; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check)' -lower-allow-check-percentile-cutoff-hot=990000 -S | FileCheck %s --check-prefixes=HOT9914; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check)' -lower-allow-check-percentile-cutoff-hot=700000 -S | FileCheck %s --check-prefixes=HOT7015; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check)' -lower-allow-check-random-rate=0 -lower-allow-check-percentile-cutoff-hot=990000 -S | FileCheck %s --check-prefixes=NONE9916; RUN: opt < %s -passes='require<profile-summary>,function(lower-allow-check)' -lower-allow-check-random-rate=1 -lower-allow-check-percentile-cutoff-hot=700000 -S | FileCheck %s --check-prefixes=ALL7017 18target triple = "x86_64-pc-linux-gnu"19 20declare void @llvm.ubsantrap(i8 immarg)21declare i1 @llvm.allow.ubsan.check(i8 immarg)22 23define dso_local noundef i32 @simple(ptr noundef readonly %0) {24; NOPROFILE-LABEL: define dso_local noundef i32 @simple(25; NOPROFILE-SAME: ptr noundef readonly [[TMP0:%.*]]) {26; NOPROFILE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null27; NOPROFILE-NEXT:    [[HOT:%.*]] = xor i1 true, true28; NOPROFILE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]29; NOPROFILE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]30; NOPROFILE:       3:31; NOPROFILE-NEXT:    tail call void @llvm.ubsantrap(i8 22)32; NOPROFILE-NEXT:    unreachable33; NOPROFILE:       4:34; NOPROFILE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 435; NOPROFILE-NEXT:    ret i32 [[TMP5]]36;37; NONE-LABEL: define dso_local noundef i32 @simple(38; NONE-SAME: ptr noundef readonly [[TMP0:%.*]]) {39; NONE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null40; NONE-NEXT:    [[HOT:%.*]] = xor i1 false, true41; NONE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]42; NONE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]43; NONE:       3:44; NONE-NEXT:    tail call void @llvm.ubsantrap(i8 22)45; NONE-NEXT:    unreachable46; NONE:       4:47; NONE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 448; NONE-NEXT:    ret i32 [[TMP5]]49;50; ALL-LABEL: define dso_local noundef i32 @simple(51; ALL-SAME: ptr noundef readonly [[TMP0:%.*]]) {52; ALL-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null53; ALL-NEXT:    [[HOT:%.*]] = xor i1 true, true54; ALL-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]55; ALL-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]56; ALL:       3:57; ALL-NEXT:    tail call void @llvm.ubsantrap(i8 22)58; ALL-NEXT:    unreachable59; ALL:       4:60; ALL-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 461; ALL-NEXT:    ret i32 [[TMP5]]62;63; HOT99-LABEL: define dso_local noundef i32 @simple(64; HOT99-SAME: ptr noundef readonly [[TMP0:%.*]]) {65; HOT99-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null66; HOT99-NEXT:    [[HOT:%.*]] = xor i1 true, true67; HOT99-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]68; HOT99-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]69; HOT99:       3:70; HOT99-NEXT:    tail call void @llvm.ubsantrap(i8 22)71; HOT99-NEXT:    unreachable72; HOT99:       4:73; HOT99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 474; HOT99-NEXT:    ret i32 [[TMP5]]75;76; HOT70-LABEL: define dso_local noundef i32 @simple(77; HOT70-SAME: ptr noundef readonly [[TMP0:%.*]]) {78; HOT70-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null79; HOT70-NEXT:    [[HOT:%.*]] = xor i1 true, true80; HOT70-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]81; HOT70-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]82; HOT70:       3:83; HOT70-NEXT:    tail call void @llvm.ubsantrap(i8 22)84; HOT70-NEXT:    unreachable85; HOT70:       4:86; HOT70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 487; HOT70-NEXT:    ret i32 [[TMP5]]88;89; NONE99-LABEL: define dso_local noundef i32 @simple(90; NONE99-SAME: ptr noundef readonly [[TMP0:%.*]]) {91; NONE99-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null92; NONE99-NEXT:    [[HOT:%.*]] = xor i1 false, true93; NONE99-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]94; NONE99-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]95; NONE99:       3:96; NONE99-NEXT:    tail call void @llvm.ubsantrap(i8 22)97; NONE99-NEXT:    unreachable98; NONE99:       4:99; NONE99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4100; NONE99-NEXT:    ret i32 [[TMP5]]101;102; ALL70-LABEL: define dso_local noundef i32 @simple(103; ALL70-SAME: ptr noundef readonly [[TMP0:%.*]]) {104; ALL70-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null105; ALL70-NEXT:    [[HOT:%.*]] = xor i1 true, true106; ALL70-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]107; ALL70-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]108; ALL70:       3:109; ALL70-NEXT:    tail call void @llvm.ubsantrap(i8 22)110; ALL70-NEXT:    unreachable111; ALL70:       4:112; ALL70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4113; ALL70-NEXT:    ret i32 [[TMP5]]114;115  %chk = icmp eq ptr %0, null116  %allow = call i1 @llvm.allow.ubsan.check(i8 22)117  %hot = xor i1 %allow, true118  %2 = or i1 %chk, %hot119  br i1 %2, label %3, label %4120 1213:122  tail call void @llvm.ubsantrap(i8 22)123  unreachable124 1254:126  %5 = load i32, ptr %0, align 4127  ret i32 %5128}129 130 131define dso_local noundef i32 @hot(ptr noundef readonly %0) !prof !36 {132; NOPROFILE-LABEL: define dso_local noundef i32 @hot(133; NOPROFILE-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {134; NOPROFILE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null135; NOPROFILE-NEXT:    [[HOT:%.*]] = xor i1 true, true136; NOPROFILE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]137; NOPROFILE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]138; NOPROFILE:       3:139; NOPROFILE-NEXT:    tail call void @llvm.ubsantrap(i8 22)140; NOPROFILE-NEXT:    unreachable141; NOPROFILE:       4:142; NOPROFILE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4143; NOPROFILE-NEXT:    ret i32 [[TMP5]]144;145; NONE-LABEL: define dso_local noundef i32 @hot(146; NONE-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {147; NONE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null148; NONE-NEXT:    [[HOT:%.*]] = xor i1 false, true149; NONE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]150; NONE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]151; NONE:       3:152; NONE-NEXT:    tail call void @llvm.ubsantrap(i8 22)153; NONE-NEXT:    unreachable154; NONE:       4:155; NONE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4156; NONE-NEXT:    ret i32 [[TMP5]]157;158; ALL-LABEL: define dso_local noundef i32 @hot(159; ALL-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {160; ALL-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null161; ALL-NEXT:    [[HOT:%.*]] = xor i1 true, true162; ALL-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]163; ALL-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]164; ALL:       3:165; ALL-NEXT:    tail call void @llvm.ubsantrap(i8 22)166; ALL-NEXT:    unreachable167; ALL:       4:168; ALL-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4169; ALL-NEXT:    ret i32 [[TMP5]]170;171; HOT99-LABEL: define dso_local noundef i32 @hot(172; HOT99-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {173; HOT99-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null174; HOT99-NEXT:    [[HOT:%.*]] = xor i1 false, true175; HOT99-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]176; HOT99-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]177; HOT99:       3:178; HOT99-NEXT:    tail call void @llvm.ubsantrap(i8 22)179; HOT99-NEXT:    unreachable180; HOT99:       4:181; HOT99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4182; HOT99-NEXT:    ret i32 [[TMP5]]183;184; HOT70-LABEL: define dso_local noundef i32 @hot(185; HOT70-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {186; HOT70-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null187; HOT70-NEXT:    [[HOT:%.*]] = xor i1 true, true188; HOT70-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]189; HOT70-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]190; HOT70:       3:191; HOT70-NEXT:    tail call void @llvm.ubsantrap(i8 22)192; HOT70-NEXT:    unreachable193; HOT70:       4:194; HOT70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4195; HOT70-NEXT:    ret i32 [[TMP5]]196;197; NONE99-LABEL: define dso_local noundef i32 @hot(198; NONE99-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {199; NONE99-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null200; NONE99-NEXT:    [[HOT:%.*]] = xor i1 false, true201; NONE99-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]202; NONE99-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]203; NONE99:       3:204; NONE99-NEXT:    tail call void @llvm.ubsantrap(i8 22)205; NONE99-NEXT:    unreachable206; NONE99:       4:207; NONE99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4208; NONE99-NEXT:    ret i32 [[TMP5]]209;210; ALL70-LABEL: define dso_local noundef i32 @hot(211; ALL70-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF16:![0-9]+]] {212; ALL70-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null213; ALL70-NEXT:    [[HOT:%.*]] = xor i1 true, true214; ALL70-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]215; ALL70-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]216; ALL70:       3:217; ALL70-NEXT:    tail call void @llvm.ubsantrap(i8 22)218; ALL70-NEXT:    unreachable219; ALL70:       4:220; ALL70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4221; ALL70-NEXT:    ret i32 [[TMP5]]222;223  %chk = icmp eq ptr %0, null224  %allow = call i1 @llvm.allow.ubsan.check(i8 22)225  %hot = xor i1 %allow, true226  %2 = or i1 %chk, %hot227  br i1 %2, label %3, label %4228 2293:230  tail call void @llvm.ubsantrap(i8 22)231  unreachable232 2334:234  %5 = load i32, ptr %0, align 4235  ret i32 %5236}237 238define dso_local noundef i32 @veryHot(ptr noundef readonly %0) !prof !39 {239; NOPROFILE-LABEL: define dso_local noundef i32 @veryHot(240; NOPROFILE-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {241; NOPROFILE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null242; NOPROFILE-NEXT:    [[HOT:%.*]] = xor i1 true, true243; NOPROFILE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]244; NOPROFILE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]245; NOPROFILE:       3:246; NOPROFILE-NEXT:    tail call void @llvm.ubsantrap(i8 22)247; NOPROFILE-NEXT:    unreachable248; NOPROFILE:       4:249; NOPROFILE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4250; NOPROFILE-NEXT:    ret i32 [[TMP5]]251;252; NONE-LABEL: define dso_local noundef i32 @veryHot(253; NONE-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {254; NONE-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null255; NONE-NEXT:    [[HOT:%.*]] = xor i1 false, true256; NONE-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]257; NONE-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]258; NONE:       3:259; NONE-NEXT:    tail call void @llvm.ubsantrap(i8 22)260; NONE-NEXT:    unreachable261; NONE:       4:262; NONE-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4263; NONE-NEXT:    ret i32 [[TMP5]]264;265; ALL-LABEL: define dso_local noundef i32 @veryHot(266; ALL-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {267; ALL-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null268; ALL-NEXT:    [[HOT:%.*]] = xor i1 true, true269; ALL-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]270; ALL-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]271; ALL:       3:272; ALL-NEXT:    tail call void @llvm.ubsantrap(i8 22)273; ALL-NEXT:    unreachable274; ALL:       4:275; ALL-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4276; ALL-NEXT:    ret i32 [[TMP5]]277;278; HOT99-LABEL: define dso_local noundef i32 @veryHot(279; HOT99-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {280; HOT99-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null281; HOT99-NEXT:    [[HOT:%.*]] = xor i1 false, true282; HOT99-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]283; HOT99-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]284; HOT99:       3:285; HOT99-NEXT:    tail call void @llvm.ubsantrap(i8 22)286; HOT99-NEXT:    unreachable287; HOT99:       4:288; HOT99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4289; HOT99-NEXT:    ret i32 [[TMP5]]290;291; HOT70-LABEL: define dso_local noundef i32 @veryHot(292; HOT70-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {293; HOT70-NEXT:    [[TMP2:%.*]] = icmp eq ptr [[TMP0]], null294; HOT70-NEXT:    [[HOT:%.*]] = xor i1 false, true295; HOT70-NEXT:    [[TMP6:%.*]] = or i1 [[TMP2]], [[HOT]]296; HOT70-NEXT:    br i1 [[TMP6]], label [[TMP3:%.*]], label [[TMP4:%.*]]297; HOT70:       3:298; HOT70-NEXT:    tail call void @llvm.ubsantrap(i8 22)299; HOT70-NEXT:    unreachable300; HOT70:       4:301; HOT70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4302; HOT70-NEXT:    ret i32 [[TMP5]]303;304; NONE99-LABEL: define dso_local noundef i32 @veryHot(305; NONE99-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {306; NONE99-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null307; NONE99-NEXT:    [[HOT:%.*]] = xor i1 false, true308; NONE99-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]309; NONE99-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]310; NONE99:       3:311; NONE99-NEXT:    tail call void @llvm.ubsantrap(i8 22)312; NONE99-NEXT:    unreachable313; NONE99:       4:314; NONE99-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4315; NONE99-NEXT:    ret i32 [[TMP5]]316;317; ALL70-LABEL: define dso_local noundef i32 @veryHot(318; ALL70-SAME: ptr noundef readonly [[TMP0:%.*]]) !prof [[PROF17:![0-9]+]] {319; ALL70-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP0]], null320; ALL70-NEXT:    [[HOT:%.*]] = xor i1 false, true321; ALL70-NEXT:    [[TMP2:%.*]] = or i1 [[CHK]], [[HOT]]322; ALL70-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]323; ALL70:       3:324; ALL70-NEXT:    tail call void @llvm.ubsantrap(i8 22)325; ALL70-NEXT:    unreachable326; ALL70:       4:327; ALL70-NEXT:    [[TMP5:%.*]] = load i32, ptr [[TMP0]], align 4328; ALL70-NEXT:    ret i32 [[TMP5]]329;330  %chk = icmp eq ptr %0, null331  %allow = call i1 @llvm.allow.ubsan.check(i8 22)332  %hot = xor i1 %allow, true333  %2 = or i1 %chk, %hot334  br i1 %2, label %3, label %4335 3363:337  tail call void @llvm.ubsantrap(i8 22)338  unreachable339 3404:341  %5 = load i32, ptr %0, align 4342  ret i32 %5343}344 345 346define dso_local noundef i32 @branchColdFnHot(i32 noundef %0, ptr noundef readonly %1) !prof !39 {347; NOPROFILE-LABEL: define dso_local noundef i32 @branchColdFnHot(348; NOPROFILE-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {349; NOPROFILE-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0350; NOPROFILE-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]351; NOPROFILE:       4:352; NOPROFILE-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null353; NOPROFILE-NEXT:    [[HOT:%.*]] = xor i1 true, true354; NOPROFILE-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]355; NOPROFILE-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]356; NOPROFILE:       6:357; NOPROFILE-NEXT:    tail call void @llvm.ubsantrap(i8 22)358; NOPROFILE-NEXT:    unreachable359; NOPROFILE:       7:360; NOPROFILE-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4361; NOPROFILE-NEXT:    br label [[TMP9]]362; NOPROFILE:       9:363; NOPROFILE-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]364; NOPROFILE-NEXT:    ret i32 [[TMP10]]365;366; NONE-LABEL: define dso_local noundef i32 @branchColdFnHot(367; NONE-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {368; NONE-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0369; NONE-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]370; NONE:       4:371; NONE-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null372; NONE-NEXT:    [[HOT:%.*]] = xor i1 false, true373; NONE-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]374; NONE-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]375; NONE:       6:376; NONE-NEXT:    tail call void @llvm.ubsantrap(i8 22)377; NONE-NEXT:    unreachable378; NONE:       7:379; NONE-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4380; NONE-NEXT:    br label [[TMP9]]381; NONE:       9:382; NONE-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]383; NONE-NEXT:    ret i32 [[TMP10]]384;385; ALL-LABEL: define dso_local noundef i32 @branchColdFnHot(386; ALL-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {387; ALL-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0388; ALL-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]389; ALL:       4:390; ALL-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null391; ALL-NEXT:    [[HOT:%.*]] = xor i1 true, true392; ALL-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]393; ALL-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]394; ALL:       6:395; ALL-NEXT:    tail call void @llvm.ubsantrap(i8 22)396; ALL-NEXT:    unreachable397; ALL:       7:398; ALL-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4399; ALL-NEXT:    br label [[TMP9]]400; ALL:       9:401; ALL-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]402; ALL-NEXT:    ret i32 [[TMP10]]403;404; HOT99-LABEL: define dso_local noundef i32 @branchColdFnHot(405; HOT99-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {406; HOT99-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0407; HOT99-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]408; HOT99:       4:409; HOT99-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null410; HOT99-NEXT:    [[HOT:%.*]] = xor i1 true, true411; HOT99-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]412; HOT99-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]413; HOT99:       6:414; HOT99-NEXT:    tail call void @llvm.ubsantrap(i8 22)415; HOT99-NEXT:    unreachable416; HOT99:       7:417; HOT99-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4418; HOT99-NEXT:    br label [[TMP9]]419; HOT99:       9:420; HOT99-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]421; HOT99-NEXT:    ret i32 [[TMP10]]422;423; HOT70-LABEL: define dso_local noundef i32 @branchColdFnHot(424; HOT70-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {425; HOT70-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0426; HOT70-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]427; HOT70:       4:428; HOT70-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null429; HOT70-NEXT:    [[HOT:%.*]] = xor i1 true, true430; HOT70-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]431; HOT70-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]432; HOT70:       6:433; HOT70-NEXT:    tail call void @llvm.ubsantrap(i8 22)434; HOT70-NEXT:    unreachable435; HOT70:       7:436; HOT70-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4437; HOT70-NEXT:    br label [[TMP9]]438; HOT70:       9:439; HOT70-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]440; HOT70-NEXT:    ret i32 [[TMP10]]441;442; NONE99-LABEL: define dso_local noundef i32 @branchColdFnHot(443; NONE99-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {444; NONE99-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0445; NONE99-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]446; NONE99:       4:447; NONE99-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null448; NONE99-NEXT:    [[HOT:%.*]] = xor i1 false, true449; NONE99-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]450; NONE99-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]451; NONE99:       6:452; NONE99-NEXT:    tail call void @llvm.ubsantrap(i8 22)453; NONE99-NEXT:    unreachable454; NONE99:       7:455; NONE99-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4456; NONE99-NEXT:    br label [[TMP9]]457; NONE99:       9:458; NONE99-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]459; NONE99-NEXT:    ret i32 [[TMP10]]460;461; ALL70-LABEL: define dso_local noundef i32 @branchColdFnHot(462; ALL70-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF17]] {463; ALL70-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0464; ALL70-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF18:![0-9]+]]465; ALL70:       4:466; ALL70-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null467; ALL70-NEXT:    [[HOT:%.*]] = xor i1 true, true468; ALL70-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]469; ALL70-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]470; ALL70:       6:471; ALL70-NEXT:    tail call void @llvm.ubsantrap(i8 22)472; ALL70-NEXT:    unreachable473; ALL70:       7:474; ALL70-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4475; ALL70-NEXT:    br label [[TMP9]]476; ALL70:       9:477; ALL70-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]478; ALL70-NEXT:    ret i32 [[TMP10]]479;480  %3 = icmp eq i32 %0, 0481  br i1 %3, label %9, label %4, !prof !38482 4834:484  %chk = icmp eq ptr %1, null485  %allow = call i1 @llvm.allow.ubsan.check(i8 22)486  %hot = xor i1 %allow, true487  %5 = or i1 %chk, %hot488  br i1 %5, label %6, label %7489 4906:491  tail call void @llvm.ubsantrap(i8 22) #2492  unreachable493 4947:495  %8 = load i32, ptr %1, align 4496  br label %9497 4989:499  %10 = phi i32 [ %8, %7 ], [ 0, %2 ]500  ret i32 %10501}502 503define dso_local noundef i32 @branchHotFnCold(i32 noundef %0, ptr noundef readonly %1) !prof !36 {504; NOPROFILE-LABEL: define dso_local noundef i32 @branchHotFnCold(505; NOPROFILE-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {506; NOPROFILE-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0507; NOPROFILE-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]508; NOPROFILE:       4:509; NOPROFILE-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null510; NOPROFILE-NEXT:    [[HOT:%.*]] = xor i1 true, true511; NOPROFILE-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]512; NOPROFILE-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]513; NOPROFILE:       6:514; NOPROFILE-NEXT:    tail call void @llvm.ubsantrap(i8 22)515; NOPROFILE-NEXT:    unreachable516; NOPROFILE:       7:517; NOPROFILE-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4518; NOPROFILE-NEXT:    br label [[TMP9]]519; NOPROFILE:       9:520; NOPROFILE-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]521; NOPROFILE-NEXT:    ret i32 [[TMP10]]522;523; NONE-LABEL: define dso_local noundef i32 @branchHotFnCold(524; NONE-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {525; NONE-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0526; NONE-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]527; NONE:       4:528; NONE-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null529; NONE-NEXT:    [[HOT:%.*]] = xor i1 false, true530; NONE-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]531; NONE-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]532; NONE:       6:533; NONE-NEXT:    tail call void @llvm.ubsantrap(i8 22)534; NONE-NEXT:    unreachable535; NONE:       7:536; NONE-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4537; NONE-NEXT:    br label [[TMP9]]538; NONE:       9:539; NONE-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]540; NONE-NEXT:    ret i32 [[TMP10]]541;542; ALL-LABEL: define dso_local noundef i32 @branchHotFnCold(543; ALL-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {544; ALL-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0545; ALL-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]546; ALL:       4:547; ALL-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null548; ALL-NEXT:    [[HOT:%.*]] = xor i1 true, true549; ALL-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]550; ALL-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]551; ALL:       6:552; ALL-NEXT:    tail call void @llvm.ubsantrap(i8 22)553; ALL-NEXT:    unreachable554; ALL:       7:555; ALL-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4556; ALL-NEXT:    br label [[TMP9]]557; ALL:       9:558; ALL-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]559; ALL-NEXT:    ret i32 [[TMP10]]560;561; HOT99-LABEL: define dso_local noundef i32 @branchHotFnCold(562; HOT99-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {563; HOT99-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0564; HOT99-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]565; HOT99:       4:566; HOT99-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null567; HOT99-NEXT:    [[HOT:%.*]] = xor i1 false, true568; HOT99-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]569; HOT99-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]570; HOT99:       6:571; HOT99-NEXT:    tail call void @llvm.ubsantrap(i8 22)572; HOT99-NEXT:    unreachable573; HOT99:       7:574; HOT99-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4575; HOT99-NEXT:    br label [[TMP9]]576; HOT99:       9:577; HOT99-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]578; HOT99-NEXT:    ret i32 [[TMP10]]579;580; HOT70-LABEL: define dso_local noundef i32 @branchHotFnCold(581; HOT70-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {582; HOT70-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0583; HOT70-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]584; HOT70:       4:585; HOT70-NEXT:    [[TMP5:%.*]] = icmp eq ptr [[TMP1]], null586; HOT70-NEXT:    [[HOT:%.*]] = xor i1 true, true587; HOT70-NEXT:    [[TMP11:%.*]] = or i1 [[TMP5]], [[HOT]]588; HOT70-NEXT:    br i1 [[TMP11]], label [[TMP6:%.*]], label [[TMP7:%.*]]589; HOT70:       6:590; HOT70-NEXT:    tail call void @llvm.ubsantrap(i8 22)591; HOT70-NEXT:    unreachable592; HOT70:       7:593; HOT70-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4594; HOT70-NEXT:    br label [[TMP9]]595; HOT70:       9:596; HOT70-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]597; HOT70-NEXT:    ret i32 [[TMP10]]598;599; NONE99-LABEL: define dso_local noundef i32 @branchHotFnCold(600; NONE99-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {601; NONE99-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0602; NONE99-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]603; NONE99:       4:604; NONE99-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null605; NONE99-NEXT:    [[HOT:%.*]] = xor i1 false, true606; NONE99-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]607; NONE99-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]608; NONE99:       6:609; NONE99-NEXT:    tail call void @llvm.ubsantrap(i8 22)610; NONE99-NEXT:    unreachable611; NONE99:       7:612; NONE99-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4613; NONE99-NEXT:    br label [[TMP9]]614; NONE99:       9:615; NONE99-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]616; NONE99-NEXT:    ret i32 [[TMP10]]617;618; ALL70-LABEL: define dso_local noundef i32 @branchHotFnCold(619; ALL70-SAME: i32 noundef [[TMP0:%.*]], ptr noundef readonly [[TMP1:%.*]]) !prof [[PROF16]] {620; ALL70-NEXT:    [[TMP3:%.*]] = icmp eq i32 [[TMP0]], 0621; ALL70-NEXT:    br i1 [[TMP3]], label [[TMP9:%.*]], label [[TMP4:%.*]], !prof [[PROF19:![0-9]+]]622; ALL70:       4:623; ALL70-NEXT:    [[CHK:%.*]] = icmp eq ptr [[TMP1]], null624; ALL70-NEXT:    [[HOT:%.*]] = xor i1 true, true625; ALL70-NEXT:    [[TMP5:%.*]] = or i1 [[CHK]], [[HOT]]626; ALL70-NEXT:    br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP7:%.*]]627; ALL70:       6:628; ALL70-NEXT:    tail call void @llvm.ubsantrap(i8 22)629; ALL70-NEXT:    unreachable630; ALL70:       7:631; ALL70-NEXT:    [[TMP8:%.*]] = load i32, ptr [[TMP1]], align 4632; ALL70-NEXT:    br label [[TMP9]]633; ALL70:       9:634; ALL70-NEXT:    [[TMP10:%.*]] = phi i32 [ [[TMP8]], [[TMP7]] ], [ 0, [[TMP2:%.*]] ]635; ALL70-NEXT:    ret i32 [[TMP10]]636;637  %3 = icmp eq i32 %0, 0638  br i1 %3, label %9, label %4, !prof !37639 6404:641  %chk = icmp eq ptr %1, null642  %allow = call i1 @llvm.allow.ubsan.check(i8 22)643  %hot = xor i1 %allow, true644  %5 = or i1 %chk, %hot645  br i1 %5, label %6, label %7646 6476:648  tail call void @llvm.ubsantrap(i8 22) #2649  unreachable650 6517:652  %8 = load i32, ptr %1, align 4653  br label %9654 6559:656  %10 = phi i32 [ %8, %7 ], [ 0, %2 ]657  ret i32 %10658}659 660!llvm.module.flags = !{!6}661!6 = !{i32 1, !"ProfileSummary", !7}662!7 = !{!8, !9, !10, !11, !12, !13, !14, !17}663!8 = !{!"ProfileFormat", !"InstrProf"}664!9 = !{!"TotalCount", i64 30000}665!10 = !{!"MaxCount", i64 10000}666!11 = !{!"MaxInternalCount", i64 10000}667!12 = !{!"MaxFunctionCount", i64 10000}668!13 = !{!"NumCounts", i64 3}669!14 = !{!"NumFunctions", i64 5}670!17 = !{!"DetailedSummary", !18}671!18 = !{!19, !29, !30, !32, !34}672!19 = !{i32 10000, i64 10000, i32 3}673!29 = !{i32 950000, i64 5000, i32 3}674!30 = !{i32 990000, i64 500, i32 4}675!32 = !{i32 999900, i64 250, i32 4}676!34 = !{i32 999999, i64 1, i32 6}677 678!36 = !{!"function_entry_count", i64 1000}679!39 = !{!"function_entry_count", i64 7000}680 681!37 = !{!"branch_weights", i32 1, i32 1000}682!38 = !{!"branch_weights", i32 1000, i32 1}683 684;.685; NOPROFILE: [[PROF16]] = !{!"function_entry_count", i64 1000}686; NOPROFILE: [[PROF17]] = !{!"function_entry_count", i64 7000}687; NOPROFILE: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}688; NOPROFILE: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}689;.690; NONE: [[PROF16]] = !{!"function_entry_count", i64 1000}691; NONE: [[PROF17]] = !{!"function_entry_count", i64 7000}692; NONE: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}693; NONE: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}694;.695; ALL: [[PROF16]] = !{!"function_entry_count", i64 1000}696; ALL: [[PROF17]] = !{!"function_entry_count", i64 7000}697; ALL: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}698; ALL: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}699;.700; HOT99: [[PROF16]] = !{!"function_entry_count", i64 1000}701; HOT99: [[PROF17]] = !{!"function_entry_count", i64 7000}702; HOT99: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}703; HOT99: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}704;.705; HOT70: [[PROF16]] = !{!"function_entry_count", i64 1000}706; HOT70: [[PROF17]] = !{!"function_entry_count", i64 7000}707; HOT70: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}708; HOT70: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}709;.710; NONE99: [[PROF16]] = !{!"function_entry_count", i64 1000}711; NONE99: [[PROF17]] = !{!"function_entry_count", i64 7000}712; NONE99: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}713; NONE99: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}714;.715; ALL70: [[PROF16]] = !{!"function_entry_count", i64 1000}716; ALL70: [[PROF17]] = !{!"function_entry_count", i64 7000}717; ALL70: [[PROF18]] = !{!"branch_weights", i32 1000, i32 1}718; ALL70: [[PROF19]] = !{!"branch_weights", i32 1, i32 1000}719;.720