Index: tests_lit/llvm2ice_tests/mangle.ll |
diff --git a/tests_lit/llvm2ice_tests/mangle.ll b/tests_lit/llvm2ice_tests/mangle.ll |
index c76a23d1179a6bf960976949f7fb7e8d241f59dd..4271244a204d18ae05c88c6434b14f8f8e6855a7 100644 |
--- a/tests_lit/llvm2ice_tests/mangle.ll |
+++ b/tests_lit/llvm2ice_tests/mangle.ll |
@@ -101,5 +101,28 @@ entry: |
} |
; MANGLE: Subzero_Z-1FuncCPlusPlusi: |
+ |
+; Test for substitution incrementing. This single test captures: |
+; S<num>_ ==> S<num+1>_ for single-digit <num> |
+; S_ ==> S0_ |
jvoung (off chromium)
2014/07/11 20:40:08
It's like "0" is the new "1", but I guess it's als
Jim Stichnoth
2014/07/11 21:05:12
Yeah, S_ is kind of like S<num>_ where num=-1.
|
+; String length increase, e.g. SZZZ_ ==> S0000_ |
+; At least one digit wrapping without length increase, e.g. SZ9ZZ_ ==> SZA00_ |
+; Unrelated identifiers containing S[0-9A-Z]* , e.g. MyClassS1x |
+; A proper substring of S<num>_ at the end of the string |
+; (to test parser edge cases) |
+ |
+define internal void @_Z3fooP10MyClassS1xP10MyClassS2xRS_RS1_S_S1_SZZZ_SZ9ZZ_S12345() { |
+; MANGLE: _ZN7Subzero3fooEP10MyClassS1xP10MyClassS2xRS0_RS2_S0_S2_S0000_SZA00_S12345: |
+entry: |
+ ret void |
+} |
+ |
+; Test that unmangled (non-C++) strings don't have substitutions updated. |
+define internal void @foo_S_S0_SZ_S() { |
+; MANGLE: Subzerofoo_S_S0_SZ_S: |
+entry: |
+ ret void |
+} |
+ |
; ERRORS-NOT: ICE translation error |
; DUMP-NOT: SZ |