honggyu.kim added a comment.
In https://reviews.llvm.org/D22666#513465, @compnerd wrote:
> No, the inserted character is a literal SOH, not the string "\01".
I don't know why the string is passed in a different way but '\01' is shown in
IR previously as below
$ clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o -
test-mcount.c
...
define i32 @f() #0 {
call void @"\01__gnu_mcount_nc"() #1
ret i32 0
}
...
But it doesn't show '\01' in IR with this modifiction.
$ clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o -
test-mcount.c
...
attributes #0 = { nounwind "counting-function"="__gnu_mcount_nc" ... }
...
The expected result is as follows. '\01' is clearly shown in IR.
$ clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o -
test-mcount.c
...
attributes #0 = { nounwind "counting-function"="\01__gnu_mcount_nc" ... }
...
Since I couldn't find why string passing is handled in a different way with
previous version, I just put double backslash in "\\01__gnu_mcount_nc" because
it generates the expected IR output. I know that we should have clear reason
for this.
Do you have any idea why this problem happens?
https://reviews.llvm.org/D22666
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits