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
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to