[PATCH] D15503: [PGO] Shorten profile symbol prefixes

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 14 13:17:13 PST 2015


I thought about that too -- but it does not work for symbols with
linkonce linkage -- it will end up inconsistent comdat groups created
leading to linker errors. In fact I have not given up on that path yet
-- but  I'd like to improve the situation incrementally -- and
evaluate more aggressive approach later.

thanks,

David




On Mon, Dec 14, 2015 at 1:10 PM, Justin Bogner <mail at justinbogner.com> wrote:
> David Li <davidxl at google.com> writes:
>> Unlike profile data section names, profile symbol names (for data,
>> counter and func names) are not part of runtime ABI. They can be
>> changed to anything (given no name conflict) without changing profile
>> format. Current naming scheme is to prefix the owning function name
>> with long prefixes: llvm_profile_name_, llvm_profile_counters_,
>> __llvm_profile_data_. For large C++ programs, this scheme can add to
>> large overhead to the size of non-stripped binary and total input
>> object size to the linker.
>>
>> This patch shortens the prefixes without losing the symbol name
>> 'readability'.
>>
>> The impact of this change: Clang profile-instr binary size is reduced
>> by 7M, and the total instrumented object size is reduced by ~40M. For
>> larger apps, the savings can be easily hundreds of mega byes.
>>
>> The test case changes are mechanical -- they are not included in the
>> review.
>
> Can't we just make these symbols unnamed or internal so that they don't
> even show up in the final object files? The more verbose names in llvm
> IR are kind of nice for readability.
>
>> davidxl updated this revision to Diff 42750.
>> davidxl added a comment.
>>
>> Include LLVM test changes as requested.
>>
>>
>> http://reviews.llvm.org/D15503
>>
>> Files:
>>   include/llvm/ProfileData/InstrProf.h
>>   test/Instrumentation/InstrProfiling/PR23499.ll
>>   test/Instrumentation/InstrProfiling/linkage.ll
>>   test/Instrumentation/InstrProfiling/no-counters.ll
>>   test/Instrumentation/InstrProfiling/noruntime.ll
>>   test/Instrumentation/InstrProfiling/platform.ll
>>   test/Instrumentation/InstrProfiling/profiling.ll
>>   test/Transforms/PGOProfile/branch1.ll
>>   test/Transforms/PGOProfile/branch2.ll
>>   test/Transforms/PGOProfile/criticaledge.ll
>>   test/Transforms/PGOProfile/landingpad.ll
>>   test/Transforms/PGOProfile/loop1.ll
>>   test/Transforms/PGOProfile/loop2.ll
>>   test/Transforms/PGOProfile/single_bb.ll
>>   test/Transforms/PGOProfile/switch.ll
>>
>> Index: test/Transforms/PGOProfile/switch.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/switch.ll
>> +++ test/Transforms/PGOProfile/switch.ll
>> @@ -4,7 +4,7 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_switch = private constant [11 x i8] c"test_switch"
>> +; GEN: @__prf_nm_test_switch = private constant [11 x i8] c"test_switch"
>>
>>  define void @test_switch(i32 %i) {
>>  entry:
>> @@ -21,22 +21,22 @@
>>
>>  sw.bb:
>>  ; GEN: sw.bb:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 2)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 2)
>>    br label %sw.epilog
>>
>>  sw.bb1:
>>  ; GEN: sw.bb1:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 0)
>>    br label %sw.epilog
>>
>>  sw.bb2:
>>  ; GEN: sw.bb2:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 1)
>>    br label %sw.epilog
>>
>>  sw.default:
>>  ; GEN: sw.default:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 3)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm_test_switch, i32 0, i32 0), i64 46200943743, i32 4, i32 3)
>>    br label %sw.epilog
>>
>>  sw.epilog:
>> Index: test/Transforms/PGOProfile/single_bb.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/single_bb.ll
>> +++ test/Transforms/PGOProfile/single_bb.ll
>> @@ -2,11 +2,11 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_single_bb = private constant [9 x i8] c"single_bb"
>> +; GEN: @__prf_nm_single_bb = private constant [9 x i8] c"single_bb"
>>
>>  define i32 @single_bb() {
>>  entry:
>>  ; GEN: entry:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__llvm_profile_name_single_bb, i32 0, i32 0), i64 12884901887, i32 1, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__prf_nm_single_bb, i32 0, i32 0), i64 12884901887, i32 1, i32 0)
>>    ret i32 0
>>  }
>> Index: test/Transforms/PGOProfile/loop2.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/loop2.ll
>> +++ test/Transforms/PGOProfile/loop2.ll
>> @@ -4,7 +4,7 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_nested_for = private constant [15 x i8] c"test_nested_for"
>> +; GEN: @__prf_nm_test_nested_for = private constant [15 x i8] c"test_nested_for"
>>
>>  define i32 @test_nested_for(i32 %r, i32 %s) {
>>  entry:
>> @@ -45,7 +45,7 @@
>>
>>  for.inc.inner:
>>  ; GEN: for.inc.inner:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__llvm_profile_name_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__prf_nm_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 0)
>>    %inc.1 = add nsw i32 %j.0, 1
>>    br label %for.cond.inner
>>
>> @@ -55,13 +55,13 @@
>>
>>  for.inc.outer:
>>  ; GEN: for.inc.outer:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__llvm_profile_name_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__prf_nm_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 1)
>>    %inc.2 = add nsw i32 %i.0, 1
>>    br label %for.cond.outer
>>
>>  for.end.outer:
>>  ; GEN: for.end.outer:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__llvm_profile_name_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 2)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__prf_nm_test_nested_for, i32 0, i32 0), i64 53929068288, i32 3, i32 2)
>>    ret i32 %sum.0
>>  }
>>
>> Index: test/Transforms/PGOProfile/loop1.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/loop1.ll
>> +++ test/Transforms/PGOProfile/loop1.ll
>> @@ -4,7 +4,7 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_simple_for = private constant [15 x i8] c"test_simple_for"
>> +; GEN: @__prf_nm_test_simple_for = private constant [15 x i8] c"test_simple_for"
>>
>>  define i32 @test_simple_for(i32 %n) {
>>  entry:
>> @@ -31,12 +31,12 @@
>>
>>  for.inc:
>>  ; GEN: for.inc:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__llvm_profile_name_test_simple_for, i32 0, i32 0), i64 34137660316, i32 2, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__prf_nm_test_simple_for, i32 0, i32 0), i64 34137660316, i32 2, i32 0)
>>    %inc1 = add nsw i32 %i, 1
>>    br label %for.cond
>>
>>  for.end:
>>  ; GEN: for.end:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__llvm_profile_name_test_simple_for, i32 0, i32 0), i64 34137660316, i32 2, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__prf_nm_test_simple_for, i32 0, i32 0), i64 34137660316, i32 2, i32 1)
>>    ret i32 %sum
>>  }
>> Index: test/Transforms/PGOProfile/landingpad.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/landingpad.ll
>> +++ test/Transforms/PGOProfile/landingpad.ll
>> @@ -6,8 +6,8 @@
>>
>>  @val = global i32 0, align 4
>>  @_ZTIi = external constant i8*
>> -; GEN: @__llvm_profile_name_bar = private constant [3 x i8] c"bar"
>> -; GEN: @__llvm_profile_name_foo = private constant [3 x i8] c"foo"
>> +; GEN: @__prf_nm_bar = private constant [3 x i8] c"bar"
>> +; GEN: @__prf_nm_foo = private constant [3 x i8] c"foo"
>>
>>  define i32 @bar(i32 %i) {
>>  entry:
>> @@ -21,7 +21,7 @@
>>
>>  if.then:
>>  ; GEN: if.then:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_bar, i32 0, i32 0), i64 24868915205, i32 2, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_bar, i32 0, i32 0), i64 24868915205, i32 2, i32 1)
>>    %exception = call i8* @__cxa_allocate_exception(i64 4)
>>    %tmp = bitcast i8* %exception to i32*
>>    store i32 %i, i32* %tmp, align 16
>> @@ -30,7 +30,7 @@
>>
>>  if.end:
>>  ; GEN: if.end:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_bar, i32 0, i32 0), i64 24868915205, i32 2, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_bar, i32 0, i32 0), i64 24868915205, i32 2, i32 0)
>>    ret i32 0
>>  }
>>
>> @@ -57,7 +57,7 @@
>>
>>  invoke.cont:
>>  ; GEN: invoke.cont:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 1)
>>    br label %if.end
>>
>>  lpad:
>> @@ -80,7 +80,7 @@
>>
>>  catch:
>>  ; GEN: catch:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 2)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 2)
>>    %tmp4 = call i8* @__cxa_begin_catch(i8* %tmp1)
>>    %tmp5 = bitcast i8* %tmp4 to i32*
>>    %tmp6 = load i32, i32* %tmp5, align 4
>> @@ -97,7 +97,7 @@
>>
>>  if.end:
>>  ; GEN: if.end:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 0)
>>    %tmp8 = load i32, i32* @val, align 4
>>    %add = add nsw i32 %tmp8, %i
>>    store i32 %add, i32* @val, align 4
>> @@ -105,7 +105,7 @@
>>
>>  eh.resume:
>>  ; GEN: eh.resume:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 3)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 59130013419, i32 4, i32 3)
>>    %lpad.val = insertvalue { i8*, i32 } undef, i8* %tmp1, 0
>>    %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %tmp2, 1
>>    resume { i8*, i32 } %lpad.val3
>> Index: test/Transforms/PGOProfile/criticaledge.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/criticaledge.ll
>> +++ test/Transforms/PGOProfile/criticaledge.ll
>> @@ -4,8 +4,8 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_criticalEdge = private constant [17 x i8] c"test_criticalEdge"
>> -; GEN: @__llvm_profile_name__stdin__bar = private constant [11 x i8] c"<stdin>:bar"
>> +; GEN: @__prf_nm_test_criticalEdge = private constant [17 x i8] c"test_criticalEdge"
>> +; GEN: @__prf_nm__stdin__bar = private constant [11 x i8] c"<stdin>:bar"
>>
>>  define i32 @test_criticalEdge(i32 %i, i32 %j) {
>>  entry:
>> @@ -24,22 +24,22 @@
>>  ; USE-SAME: !prof ![[BW_SWITCH:[0-9]+]]
>>
>>  ; CHECK: entry.sw.bb2_crit_edge1:
>> -; GEN:   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 1)
>> +; GEN:   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 1)
>>  ; CHECK:   br label %sw.bb2
>>
>>  ; CHECK: entry.sw.bb2_crit_edge:
>> -; GEN:   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 0)
>> +; GEN:   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 0)
>>  ; CHECK:   br label %sw.bb2
>>
>>  sw.bb:
>>  ; GEN: sw.bb:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 5)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 5)
>>    %call = call i32 @bar(i32 2)
>>    br label %sw.epilog
>>
>>  sw.bb1:
>>  ; GEN: sw.bb1:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 4)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 4)
>>    %call2 = call i32 @bar(i32 1024)
>>    br label %sw.epilog
>>
>> @@ -53,13 +53,13 @@
>>
>>  if.then:
>>  ; GEN: if.then:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 2)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 2)
>>    %call4 = call i32 @bar(i32 4)
>>    br label %return
>>
>>  if.end:
>>  ; GEN: if.end:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 3)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 3)
>>    %call5 = call i32 @bar(i32 8)
>>    br label %sw.epilog
>>
>> @@ -74,13 +74,13 @@
>>
>>  if.then8:
>>  ; GEN: if.then8:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 7)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 7)
>>    %add = add nsw i32 %call6, 10
>>    br label %if.end9
>>
>>  if.end9:
>>  ; GEN: if.end9:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__llvm_profile_name_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 6)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__prf_nm_test_criticalEdge, i32 0, i32 0), i64 82323253069, i32 8, i32 6)
>>    %res.0 = phi i32 [ %add, %if.then8 ], [ %call6, %sw.default ]
>>    br label %sw.epilog
>>
>> @@ -99,7 +99,7 @@
>>
>>  define internal i32 @bar(i32 %i) {
>>  entry:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name__stdin__bar, i32 0, i32 0), i64 12884901887, i32 1, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm__stdin__bar, i32 0, i32 0), i64 12884901887, i32 1, i32 0)
>>    ret i32 %i
>>  }
>>
>> Index: test/Transforms/PGOProfile/branch2.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/branch2.ll
>> +++ test/Transforms/PGOProfile/branch2.ll
>> @@ -4,7 +4,7 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_br_2 = private constant [9 x i8] c"test_br_2"
>> +; GEN: @__prf_nm_test_br_2 = private constant [9 x i8] c"test_br_2"
>>
>>  define i32 @test_br_2(i32 %i) {
>>  entry:
>> @@ -18,13 +18,13 @@
>>
>>  if.then:
>>  ; GEN: if.then:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__llvm_profile_name_test_br_2, i32 0, i32 0), i64 29667547796, i32 2, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__prf_nm_test_br_2, i32 0, i32 0), i64 29667547796, i32 2, i32 0)
>>    %add = add nsw i32 %i, 2
>>    br label %if.end
>>
>>  if.else:
>>  ; GEN: if.else:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__llvm_profile_name_test_br_2, i32 0, i32 0), i64 29667547796, i32 2, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__prf_nm_test_br_2, i32 0, i32 0), i64 29667547796, i32 2, i32 1)
>>    %sub = sub nsw i32 %i, 2
>>    br label %if.end
>>
>> Index: test/Transforms/PGOProfile/branch1.ll
>> ===================================================================
>> --- test/Transforms/PGOProfile/branch1.ll
>> +++ test/Transforms/PGOProfile/branch1.ll
>> @@ -4,7 +4,7 @@
>>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>>  target triple = "x86_64-unknown-linux-gnu"
>>
>> -; GEN: @__llvm_profile_name_test_br_1 = private constant [9 x i8] c"test_br_1"
>> +; GEN: @__prf_nm_test_br_1 = private constant [9 x i8] c"test_br_1"
>>
>>  define i32 @test_br_1(i32 %i) {
>>  entry:
>> @@ -18,13 +18,13 @@
>>
>>  if.then:
>>  ; GEN: if.then:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__llvm_profile_name_test_br_1, i32 0, i32 0), i64 25571299074, i32 2, i32 1)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__prf_nm_test_br_1, i32 0, i32 0), i64 25571299074, i32 2, i32 1)
>>    %add = add nsw i32 %i, 2
>>    br label %if.end
>>
>>  if.end:
>>  ; GEN: if.end:
>> -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__llvm_profile_name_test_br_1, i32 0, i32 0), i64 25571299074, i32 2, i32 0)
>> +; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__prf_nm_test_br_1, i32 0, i32 0), i64 25571299074, i32 2, i32 0)
>>    %retv = phi i32 [ %add, %if.then ], [ %i, %entry ]
>>    ret i32 %retv
>>  }
>> Index: test/Instrumentation/InstrProfiling/profiling.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/profiling.ll
>> +++ test/Instrumentation/InstrProfiling/profiling.ll
>> @@ -2,37 +2,37 @@
>>
>>  target triple = "x86_64-apple-macosx10.10.0"
>>
>> - at __llvm_profile_name_foo = hidden constant [3 x i8] c"foo"
>> -; CHECK: @__llvm_profile_name_foo = hidden constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
>> - at __llvm_profile_name_bar = hidden constant [4 x i8] c"bar\00"
>> -; CHECK: @__llvm_profile_name_bar = hidden constant [4 x i8] c"bar\00", section "__DATA,__llvm_prf_names", align 1
>> - at __llvm_profile_name_baz = hidden constant [3 x i8] c"baz"
>> -; CHECK: @__llvm_profile_name_baz = hidden constant [3 x i8] c"baz", section "__DATA,__llvm_prf_names", align 1
>> + at __prf_nm_foo = hidden constant [3 x i8] c"foo"
>> +; CHECK: @__prf_nm_foo = hidden constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
>> + at __prf_nm_bar = hidden constant [4 x i8] c"bar\00"
>> +; CHECK: @__prf_nm_bar = hidden constant [4 x i8] c"bar\00", section "__DATA,__llvm_prf_names", align 1
>> + at __prf_nm_baz = hidden constant [3 x i8] c"baz"
>> +; CHECK: @__prf_nm_baz = hidden constant [3 x i8] c"baz", section "__DATA,__llvm_prf_names", align 1
>>
>> -; CHECK: @__llvm_profile_counters_foo = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> -; CHECK: @__llvm_profile_data_foo = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>> +; CHECK: @__prf_cn_foo = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> +; CHECK: @__prf_dt_foo = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>>  define void @foo() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> -; CHECK: @__llvm_profile_counters_bar = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> -; CHECK: @__llvm_profile_data_bar = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>> +; CHECK: @__prf_cn_bar = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> +; CHECK: @__prf_dt_bar = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>>  define void @bar() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__llvm_profile_name_bar, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__prf_nm_bar, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> -; CHECK: @__llvm_profile_counters_baz = hidden global [3 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> -; CHECK: @__llvm_profile_data_baz = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>> +; CHECK: @__prf_cn_baz = hidden global [3 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> +; CHECK: @__prf_dt_baz = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>>  define void @baz() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_baz, i32 0, i32 0), i64 0, i32 3, i32 0)
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_baz, i32 0, i32 0), i64 0, i32 3, i32 1)
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_baz, i32 0, i32 0), i64 0, i32 3, i32 2)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_baz, i32 0, i32 0), i64 0, i32 3, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_baz, i32 0, i32 0), i64 0, i32 3, i32 1)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_baz, i32 0, i32 0), i64 0, i32 3, i32 2)
>>    ret void
>>  }
>>
>>  declare void @llvm.instrprof.increment(i8*, i64, i32, i32)
>>
>>  ; CHECK: @__llvm_profile_runtime = external global i32
>> -; CHECK: @llvm.used = appending global {{.*}} @__llvm_profile_data_foo {{.*}} @__llvm_profile_data_bar {{.*}} @__llvm_profile_data_baz {{.*}} section "llvm.metadata"
>> +; CHECK: @llvm.used = appending global {{.*}} @__prf_dt_foo {{.*}} @__prf_dt_bar {{.*}} @__prf_dt_baz {{.*}} section "llvm.metadata"
>> Index: test/Instrumentation/InstrProfiling/platform.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/platform.ll
>> +++ test/Instrumentation/InstrProfiling/platform.ll
>> @@ -5,20 +5,20 @@
>>  ; RUN: opt < %s -mtriple=x86_64-unknown-freebsd -instrprof -S | FileCheck %s -check-prefix=FREEBSD
>>  ; RUN: opt < %s -mtriple=x86_64-pc-solaris -instrprof -S | FileCheck %s -check-prefix=SOLARIS
>>
>> - at __llvm_profile_name_foo = hidden constant [3 x i8] c"foo"
>> -; MACHO: @__llvm_profile_name_foo = hidden constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
>> -; ELF: @__llvm_profile_name_foo = hidden constant [3 x i8] c"foo", section "__llvm_prf_names", align 1
>> + at __prf_nm_foo = hidden constant [3 x i8] c"foo"
>> +; MACHO: @__prf_nm_foo = hidden constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
>> +; ELF: @__prf_nm_foo = hidden constant [3 x i8] c"foo", section "__llvm_prf_names", align 1
>>
>> -; MACHO: @__llvm_profile_counters_foo = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> -; ELF: @__llvm_profile_counters_foo = hidden global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", align 8
>> +; MACHO: @__prf_cn_foo = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
>> +; ELF: @__prf_cn_foo = hidden global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", align 8
>>
>> -; MACHO: @__llvm_profile_data_foo = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>> -; LINUX: @__llvm_profile_data_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>> -; FREEBSD: @__llvm_profile_data_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>> -; SOLARIS: @__llvm_profile_data_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>> +; MACHO: @__prf_dt_foo = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
>> +; LINUX: @__prf_dt_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>> +; FREEBSD: @__prf_dt_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>> +; SOLARIS: @__prf_dt_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
>>
>>  define void @foo() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> Index: test/Instrumentation/InstrProfiling/noruntime.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/noruntime.ll
>> +++ test/Instrumentation/InstrProfiling/noruntime.ll
>> @@ -6,10 +6,10 @@
>>
>>  @__llvm_profile_runtime = global i32 0, align 4
>>
>> - at __llvm_profile_name_foo = hidden constant [3 x i8] c"foo"
>> + at __prf_nm_foo = hidden constant [3 x i8] c"foo"
>>
>>  define void @foo() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> Index: test/Instrumentation/InstrProfiling/no-counters.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/no-counters.ll
>> +++ test/Instrumentation/InstrProfiling/no-counters.ll
>> @@ -1,8 +1,8 @@
>>  ;; No instrumentation should be emitted if there are no counter increments.
>>
>>  ; RUN: opt < %s -instrprof -S | FileCheck %s
>> -; CHECK-NOT: @__llvm_profile_counters
>> -; CHECK-NOT: @__llvm_profile_data
>> +; CHECK-NOT: @__prf_cn
>> +; CHECK-NOT: @__prf_dt
>>  ; CHECK-NOT: @__llvm_profile_runtime
>>
>>  define void @foo() {
>> Index: test/Instrumentation/InstrProfiling/linkage.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/linkage.ll
>> +++ test/Instrumentation/InstrProfiling/linkage.ll
>> @@ -3,36 +3,36 @@
>>  ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.10.0 -instrprof -S | FileCheck %s --check-prefix=OTHER --check-prefix=COMMON
>>  ; RUN: opt < %s -mtriple=x86_64-unknown-linux -instrprof -S | FileCheck %s --check-prefix=LINUX --check-prefix=COMMON
>>
>> - at __llvm_profile_name_foo = hidden constant [3 x i8] c"foo"
>> - at __llvm_profile_name_foo_weak = weak hidden constant [8 x i8] c"foo_weak"
>> -@"__llvm_profile_name_linkage.ll:foo_internal" = internal constant [23 x i8] c"linkage.ll:foo_internal"
>> - at __llvm_profile_name_foo_inline = linkonce_odr hidden constant [10 x i8] c"foo_inline"
>> + at __prf_nm_foo = hidden constant [3 x i8] c"foo"
>> + at __prf_nm_foo_weak = weak hidden constant [8 x i8] c"foo_weak"
>> +@"__prf_nm_linkage.ll:foo_internal" = internal constant [23 x i8] c"linkage.ll:foo_internal"
>> + at __prf_nm_foo_inline = linkonce_odr hidden constant [10 x i8] c"foo_inline"
>>
>> -; COMMON: @__llvm_profile_counters_foo = hidden global
>> -; COMMON: @__llvm_profile_data_foo = hidden global
>> +; COMMON: @__prf_cn_foo = hidden global
>> +; COMMON: @__prf_dt_foo = hidden global
>>  define void @foo() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__prf_nm_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> -; COMMON: @__llvm_profile_counters_foo_weak = weak hidden global
>> -; COMMON: @__llvm_profile_data_foo_weak = weak hidden global
>> +; COMMON: @__prf_cn_foo_weak = weak hidden global
>> +; COMMON: @__prf_dt_foo_weak = weak hidden global
>>  define weak void @foo_weak() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__llvm_profile_name_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__prf_nm_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> -; COMMON: @"__llvm_profile_counters_linkage.ll:foo_internal" = internal global
>> -; COMMON: @"__llvm_profile_data_linkage.ll:foo_internal" = internal global
>> +; COMMON: @"__prf_cn_linkage.ll:foo_internal" = internal global
>> +; COMMON: @"__prf_dt_linkage.ll:foo_internal" = internal global
>>  define internal void @foo_internal() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"__llvm_profile_name_linkage.ll:foo_internal", i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"__prf_nm_linkage.ll:foo_internal", i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> -; COMMON: @__llvm_profile_counters_foo_inline = linkonce_odr hidden global
>> -; COMMON: @__llvm_profile_data_foo_inline = linkonce_odr hidden global
>> +; COMMON: @__prf_cn_foo_inline = linkonce_odr hidden global
>> +; COMMON: @__prf_dt_foo_inline = linkonce_odr hidden global
>>  define linkonce_odr void @foo_inline() {
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__llvm_profile_name_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__prf_nm_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>>
>> Index: test/Instrumentation/InstrProfiling/PR23499.ll
>> ===================================================================
>> --- test/Instrumentation/InstrProfiling/PR23499.ll
>> +++ test/Instrumentation/InstrProfiling/PR23499.ll
>> @@ -6,16 +6,16 @@
>>
>>  $_Z3barIvEvv = comdat any
>>
>> - at __llvm_profile_name__Z3barIvEvv = linkonce_odr hidden constant [11 x i8] c"_Z3barIvEvv", align 1
>> + at __prf_nm__Z3barIvEvv = linkonce_odr hidden constant [11 x i8] c"_Z3barIvEvv", align 1
>>
>> -; CHECK: @__llvm_profile_name__Z3barIvEvv = linkonce_odr hidden constant [11 x i8] c"_Z3barIvEvv", section "{{.*}}__llvm_prf_names", comdat($__llvm_profile_vars__Z3barIvEvv), align 1
>> -; CHECK: @__llvm_profile_counters__Z3barIvEvv = linkonce_odr hidden global [1 x i64] zeroinitializer, section "{{.*}}__llvm_prf_cnts", comdat($__llvm_profile_vars__Z3barIvEvv), align 8
>> -; CHECK: @__llvm_profile_data__Z3barIvEvv = linkonce_odr hidden global { i32, i32, i64, i8*, i64*, i8*, i8*, [1 x i16] } { i32 11, i32 1, i64 0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name__Z3barIvEvv, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__llvm_profile_counters__Z3barIvEvv, i32 0, i32 0), i8* null, i8* null, [1 x i16] zeroinitializer }, section "{{.*}}__llvm_prf_data", comdat($__llvm_profile_vars__Z3barIvEvv), align 8
>> +; CHECK: @__prf_nm__Z3barIvEvv = linkonce_odr hidden constant [11 x i8] c"_Z3barIvEvv", section "{{.*}}__llvm_prf_names", comdat($__llvm_profile_vars__Z3barIvEvv), align 1
>> +; CHECK: @__prf_cn__Z3barIvEvv = linkonce_odr hidden global [1 x i64] zeroinitializer, section "{{.*}}__llvm_prf_cnts", comdat($__llvm_profile_vars__Z3barIvEvv), align 8
>> +; CHECK: @__prf_dt__Z3barIvEvv = linkonce_odr hidden global { i32, i32, i64, i8*, i64*, i8*, i8*, [1 x i16] } { i32 11, i32 1, i64 0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm__Z3barIvEvv, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__prf_cn__Z3barIvEvv, i32 0, i32 0), i8* null, i8* null, [1 x i16] zeroinitializer }, section "{{.*}}__llvm_prf_data", comdat($__llvm_profile_vars__Z3barIvEvv), align 8
>>
>>  declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #1
>>
>>  define linkonce_odr void @_Z3barIvEvv() comdat {
>>  entry:
>> -  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__llvm_profile_name__Z3barIvEvv, i32 0, i32 0), i64 0, i32 1, i32 0)
>> +  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__prf_nm__Z3barIvEvv, i32 0, i32 0), i64 0, i32 1, i32 0)
>>    ret void
>>  }
>> Index: include/llvm/ProfileData/InstrProf.h
>> ===================================================================
>> --- include/llvm/ProfileData/InstrProf.h
>> +++ include/llvm/ProfileData/InstrProf.h
>> @@ -70,15 +70,13 @@
>>  }
>>
>>  /// Return the name prefix of variables containing instrumented function names.
>> -inline StringRef getInstrProfNameVarPrefix() { return "__llvm_profile_name_"; }
>> +inline StringRef getInstrProfNameVarPrefix() { return "__prf_nm_"; }
>>
>>  /// Return the name prefix of variables containing per-function control data.
>> -inline StringRef getInstrProfDataVarPrefix() { return "__llvm_profile_data_"; }
>> +inline StringRef getInstrProfDataVarPrefix() { return "__prf_dt_"; }
>>
>>  /// Return the name prefix of profile counter variables.
>> -inline StringRef getInstrProfCountersVarPrefix() {
>> -  return "__llvm_profile_counters_";
>> -}
>> +inline StringRef getInstrProfCountersVarPrefix() { return "__prf_cn_"; }
>>
>>  /// Return the name prefix of the COMDAT group for instrumentation variables
>>  /// associated with a COMDAT function.


More information about the llvm-commits mailing list