Subzero: Shorten and normalize strings in non-DUMP builds.
Jump table labels change from ".Lxxxxx_yy" to "$Jxxxxx_yy".
Pooled float labels change from ".L$float$xxxxyyyy" to "$Fxxxxyyyy".
Pooled double labels change from ".L$double$xxxxxxxxyyyyyyyy" to "$Dxxxxxxxxyyyyyyyy".
All these should in theory not conflict with C/C++ user symbols.
Float labels now likely fit into short strings and don't require extra memory allocation.
Double labels may exceed the limit - encoding in base64 instead of hex would fix that. Or, directly use the binary bytes as the string value.
BUG= none
R=jpp@chromium.org
Review URL: https://codereview.chromium.org/1868113002 .
diff --git a/tests_lit/llvm2ice_tests/bitcast.ll b/tests_lit/llvm2ice_tests/bitcast.ll
index e61a165..b5e9066 100644
--- a/tests_lit/llvm2ice_tests/bitcast.ll
+++ b/tests_lit/llvm2ice_tests/bitcast.ll
@@ -49,8 +49,8 @@
ret i64 %v0
}
; CHECK-LABEL: cast_d2ll_const
-; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x0 {{.*}} .L$double$0012345678901234
-; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x4 {{.*}} .L$double$0012345678901234
+; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x0 {{.*}} {{.*}}0012345678901234
+; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x4 {{.*}} {{.*}}0012345678901234
; ARM32-LABEL: cast_d2ll_const
; ARM32-DAG: movw [[ADDR:r[0-9]+]], #:lower16:.L$
; ARM32-DAG: movt [[ADDR]], #:upper16:.L$
diff --git a/tests_lit/llvm2ice_tests/elf_container.ll b/tests_lit/llvm2ice_tests/elf_container.ll
index 6ab0f4d..bee9002 100644
--- a/tests_lit/llvm2ice_tests/elf_container.ll
+++ b/tests_lit/llvm2ice_tests/elf_container.ll
@@ -57,8 +57,8 @@
ret float %f
}
; TEXT-RELOCS-LABEL: returnFloatConst
-; TEXT-RELOCS: movss {{.*}} R_386_32 .L$float$80000000
-; TEXT-RELOCS: addss {{.*}} R_386_32 .L$float$3f9d70a0
+; TEXT-RELOCS: movss {{.*}} R_386_32 {{.*}}80000000
+; TEXT-RELOCS: addss {{.*}} R_386_32 {{.*}}3f9d70a0
define internal double @returnDoubleConst() {
entry:
@@ -67,9 +67,9 @@
ret double %d2
}
; TEXT-RELOCS-LABEL: returnDoubleConst
-; TEXT-RELOCS: movsd {{.*}} R_386_32 .L$double$ffffffffffffffff
-; TEXT-RELOCS: addsd {{.*}} R_386_32 .L$double$fff7ffffffffffff
-; TEXT-RELOCS: addsd {{.*}} R_386_32 .L$double$fff8000000000003
+; TEXT-RELOCS: movsd {{.*}} R_386_32 {{.*}}ffffffffffffffff
+; TEXT-RELOCS: addsd {{.*}} R_386_32 {{.*}}fff7ffffffffffff
+; TEXT-RELOCS: addsd {{.*}} R_386_32 {{.*}}fff8000000000003
; Test intrinsics that call out to external functions.
define internal void @test_memcpy(i32 %iptr_dst, i32 %len) {
@@ -385,11 +385,11 @@
; CHECK: Relocations [
; CHECK: Section ({{[0-9]+}}) .rel.text {
-; CHECK: 0x7 R_386_32 .L$float$80000000 0x0
-; CHECK: 0xF R_386_32 .L$float$3f9d70a0 0x0
-; CHECK: 0x27 R_386_32 .L$double$ffffffffffffffff 0x0
-; CHECK: 0x2F R_386_32 .L$double$fff7ffffffffffff 0x0
-; CHECK: 0x37 R_386_32 .L$double$fff8000000000003 0x0
+; CHECK: 0x7 R_386_32 {{.*}}80000000 0x0
+; CHECK: 0xF R_386_32 {{.*}}3f9d70a0 0x0
+; CHECK: 0x27 R_386_32 {{.*}}ffffffffffffffff 0x0
+; CHECK: 0x2F R_386_32 {{.*}}fff7ffffffffffff 0x0
+; CHECK: 0x37 R_386_32 {{.*}}fff8000000000003 0x0
; CHECK: 0x{{.*}} R_386_PC32 memcpy
; CHECK: 0x{{.*}} R_386_PC32 memset
; CHECK: 0x{{.*}} R_386_PC32 external_foo
@@ -421,7 +421,7 @@
; CHECK-NEXT: Section: Undefined (0x0)
; CHECK-NEXT: }
; CHECK: Symbol {
-; CHECK: Name: .L$double$fff8000000000003
+; CHECK: Name: {{.*}}fff8000000000003
; CHECK-NEXT: Value: 0x8
; CHECK-NEXT: Size: 0
; CHECK-NEXT: Binding: Local (0x0)
@@ -430,7 +430,7 @@
; CHECK-NEXT: Section: .rodata.cst8
; CHECK-NEXT: }
; CHECK: Symbol {
-; CHECK: Name: .L$double$ffffffffffffffff
+; CHECK: Name: {{.*}}ffffffffffffffff
; CHECK-NEXT: Value: 0x10
; CHECK-NEXT: Size: 0
; CHECK-NEXT: Binding: Local (0x0)
@@ -439,7 +439,7 @@
; CHECK-NEXT: Section: .rodata.cst8
; CHECK-NEXT: }
; CHECK: Symbol {
-; CHECK: Name: .L$float$3f9d70a0
+; CHECK: Name: {{.*}}3f9d70a0
; CHECK-NEXT: Value: 0x0
; CHECK-NEXT: Size: 0
; CHECK-NEXT: Binding: Local (0x0)
@@ -448,7 +448,7 @@
; CHECK-NEXT: Section: .rodata.cst4
; CHECK-NEXT: }
; CHECK: Symbol {
-; CHECK: Name: .L$float$80000000
+; CHECK: Name: {{.*}}80000000
; CHECK-NEXT: Value: 0x4
; CHECK-NEXT: Size: 0
; CHECK-NEXT: Binding: Local (0x0)