[llvm] 12eddda - [CodeGen] Fix two dots between text section name and symbol name

via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 19 18:49:01 PST 2021


Author: Pan, Tao
Date: 2021-02-20T10:15:48+08:00
New Revision: 12edddafac451cb39b923dd0883794f554fc9616

URL: https://github.com/llvm/llvm-project/commit/12edddafac451cb39b923dd0883794f554fc9616
DIFF: https://github.com/llvm/llvm-project/commit/12edddafac451cb39b923dd0883794f554fc9616.diff

LOG: [CodeGen] Fix two dots between text section name and symbol name

There is a trailing dot in text section name if it has prefix, don't add
repeated dot when connect text section name and symbol name.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D96327

Added: 
    

Modified: 
    llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    llvm/test/DebugInfo/X86/basic-block-sections_1.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index 7d3d40296022..2530fdc90378 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -626,6 +626,8 @@ getELFSectionNameForGlobal(const GlobalObject *GO, SectionKind Kind,
     Name.push_back('.');
     TM.getNameWithPrefix(Name, GO, Mang, /*MayAlwaysUsePrivate*/true);
   } else if (HasPrefix)
+    // For distinguishing between .text.${text-section-prefix}. (with trailing
+    // dot) and .text.${function-name}
     Name.push_back('.');
   return Name;
 }
@@ -939,7 +941,8 @@ MCSection *TargetLoweringObjectFileELF::getSectionForMachineBasicBlock(
   } else {
     Name += MBB.getParent()->getSection()->getName();
     if (TM.getUniqueBasicBlockSectionNames()) {
-      Name += ".";
+      if (!Name.endswith("."))
+        Name += ".";
       Name += MBB.getSymbol()->getName();
     } else {
       UniqueID = NextUniqueID++;

diff  --git a/llvm/test/DebugInfo/X86/basic-block-sections_1.ll b/llvm/test/DebugInfo/X86/basic-block-sections_1.ll
index 1e5df81bfd39..3cb4a4a3737f 100644
--- a/llvm/test/DebugInfo/X86/basic-block-sections_1.ll
+++ b/llvm/test/DebugInfo/X86/basic-block-sections_1.ll
@@ -7,19 +7,19 @@
 ; From:
 ; 1  int foo(int a) {
 ; 2    if (a > 20)
-; 3      return 2;
+; 3      return bar();
 ; 4    else
-; 5      return 0;
+; 5      return baz();
 ; 6  }
 
-; NO-SECTIONS: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000 ".text")
+; NO-SECTIONS: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000 ".text.hot.")
 ; NO-SECTIONS: DW_AT_high_pc [DW_FORM_data4] ({{.*}})
 ; BB-SECTIONS: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
 ; BB-SECTIONS-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
-; BB-SECTIONS-NEXT: [{{.*}}) ".text._Z3fooi._Z3fooi.__part.1"
-; BB-SECTIONS-NEXT: [{{.*}}) ".text._Z3fooi._Z3fooi.__part.2"
-; BB-SECTIONS-NEXT: [{{.*}}) ".text._Z3fooi._Z3fooi.__part.3"
-; BB-SECTIONS-NEXT: [{{.*}}) ".text._Z3fooi"
+; BB-SECTIONS-NEXT: [{{.*}}) ".text.hot._Z3fooi._Z3fooi.__part.1"
+; BB-SECTIONS-NEXT: [{{.*}}) ".text.hot._Z3fooi._Z3fooi.__part.2"
+; BB-SECTIONS-NEXT: [{{.*}}) ".text.hot._Z3fooi._Z3fooi.__part.3"
+; BB-SECTIONS-NEXT: [{{.*}}) ".text.hot._Z3fooi"
 ; BB-SECTIONS-ASM: _Z3fooi:
 ; BB-SECTIONS-ASM: .Ltmp{{[0-9]+}}:
 ; BB-SECTIONS-ASM-NEXT: .loc 1 2 9 prologue_end
@@ -50,40 +50,46 @@
 ; BB-SECTIONS-ASM-NEXT:	.quad	0
 ; BB-SECTIONS-LINE-TABLE:      0x0000000000000000 1 0 1 0 0 is_stmt
 ; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000004 2 9 1 0 0 is_stmt prologue_end
-; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000009 2 7 1 0 0
-; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000000b 3 5 1 0 0 is_stmt
-; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000015 5 5 1 0 0 is_stmt
-; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000001d 6 1 1 0 0 is_stmt
-; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000022 6 1 1 0 0 is_stmt end_sequence
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000008 2 7 1 0 0
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000000a 0 7 1 0 0
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000000f 3 5 1 0 0 is_stmt
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000015 0 5 1 0 0
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000001a 5 5 1 0 0 is_stmt
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x000000000000001e 6 1 1 0 0 is_stmt
+; BB-SECTIONS-LINE-TABLE-NEXT: 0x0000000000000024 6 1 1 0 0 is_stmt end_sequence
 
 ; Function Attrs: noinline nounwind optnone uwtable
-define dso_local i32 @_Z3fooi(i32 %0) !dbg !7 {
+define dso_local i32 @_Z3fooi(i32 %0) !dbg !7 !prof !34 !section_prefix !35 {
   %2 = alloca i32, align 4
   %3 = alloca i32, align 4
   store i32 %0, i32* %3, align 4
   call void @llvm.dbg.declare(metadata i32* %3, metadata !11, metadata !DIExpression()), !dbg !12
   %4 = load i32, i32* %3, align 4, !dbg !13
   %5 = icmp sgt i32 %4, 20, !dbg !15
-  br i1 %5, label %6, label %7, !dbg !16
+  br i1 %5, label %6, label %8, !dbg !16, !prof !36
 
 6:                                                ; preds = %1
-  store i32 2, i32* %2, align 4, !dbg !17
-  br label %8, !dbg !17
+  %7 = call i32 @bar()
+  store i32 %7, i32* %2, align 4, !dbg !17
+  br label %10, !dbg !17
 
-7:                                                ; preds = %1
-  store i32 0, i32* %2, align 4, !dbg !18
-  br label %8, !dbg !18
+8:                                                ; preds = %1
+  %9 = call i32 @baz()
+  store i32 %9, i32* %2, align 4, !dbg !18
+  br label %10, !dbg !18
 
-8:                                                ; preds = %7, %6
-  %9 = load i32, i32* %2, align 4, !dbg !19
-  ret i32 %9, !dbg !19
+10:                                                ; preds = %8, %6
+  %11 = load i32, i32* %2, align 4, !dbg !19
+  ret i32 %11, !dbg !19
 }
 
 ; Function Attrs: nounwind readnone speculatable willreturn
 declare void @llvm.dbg.declare(metadata, metadata, metadata)
+declare i32 @bar()
+declare i32 @baz()
 
 !llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4}
+!llvm.module.flags = !{!3, !4, !20}
 
 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 10.0.0 (git at github.com:google/llvm-propeller.git f9421ebf4b3d8b64678bf6c49d1607fdce3f50c5)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
 !1 = !DIFile(filename: "debuginfo.cc", directory: "/")
@@ -103,3 +109,20 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata)
 !17 = !DILocation(line: 3, column: 5, scope: !14)
 !18 = !DILocation(line: 5, column: 5, scope: !14)
 !19 = !DILocation(line: 6, column: 1, scope: !7)
+!20 = !{i32 1, !"ProfileSummary", !21}
+!21 = !{!22, !23, !24, !25, !26, !27, !28, !29}
+!22 = !{!"ProfileFormat", !"InstrProf"}
+!23 = !{!"TotalCount", i64 10000}
+!24 = !{!"MaxCount", i64 10}
+!25 = !{!"MaxInternalCount", i64 1}
+!26 = !{!"MaxFunctionCount", i64 1000}
+!27 = !{!"NumCounts", i64 3}
+!28 = !{!"NumFunctions", i64 5}
+!29 = !{!"DetailedSummary", !30}
+!30 = !{!31, !32, !33}
+!31 = !{i32 10000, i64 100, i32 1}
+!32 = !{i32 999900, i64 100, i32 1}
+!33 = !{i32 999999, i64 1, i32 2}
+!34 = !{!"function_entry_count", i64 7000}
+!35 = !{!"function_section_prefix", !"hot"}
+!36 = !{!"branch_weights", i32 6999, i32 1}


        


More information about the llvm-commits mailing list