Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. $ cat alloca.c
  2. void func(void *buf);
  3. void func2(int a) {
  4. void *buf = _alloca(a);
  5. func(buf);
  6. }
  7. $ cl -c alloca.c -O2 -GS-
  8. Microsoft (R) C/C++ Optimizing Compiler Version 19.12.25830.2 for ARM
  9. Copyright (C) Microsoft Corporation. All rights reserved.
  10.  
  11. alloca.c
  12. $ dumpbin -disasm alloca.obj
  13. Microsoft (R) COFF/PE Dumper Version 14.12.25830.2
  14. Copyright (C) Microsoft Corporation. All rights reserved.
  15.  
  16.  
  17. Dump of file alloca.obj
  18.  
  19. File Type: COFF OBJECT
  20.  
  21. func2:
  22. 00000000: B598 push {r3,r4,r7,lr}
  23. 00000002: 466F mov r7,sp
  24. 00000004: 1DC3 adds r3,r0,#7
  25. 00000006: 4283 cmp r3,r0
  26. 00000008: D801 bhi $LN3
  27. 0000000A: F06F 0307 mvn r3,#7
  28. $LN3:
  29. 0000000E: F023 0307 bic r3,r3,#7
  30. 00000012: 089C lsrs r4,r3,#2
  31. 00000014: F000 F800 bl __chkstk
  32. 00000018: EBAD 0D04 sub sp,sp,r4
  33. 0000001C: 4668 mov r0,sp
  34. 0000001E: F000 F800 bl func
  35. 00000022: 46BD mov sp,r7
  36. 00000024: BD98 pop {r3,r4,r7,pc}
  37.  
  38.  
  39. $ cat vla.c
  40. void func(void *buf);
  41. void func2(int a) {
  42. char *buf[a];
  43. func(buf);
  44. }
  45. $ clang -target armv7-win32-msvc -S -emit-llvm alloca.c -O2
  46. $ cat alloca.ll
  47. ; ModuleID = 'alloca.c'
  48. source_filename = "alloca.c"
  49. target datalayout = "e-m:w-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
  50. target triple = "thumbv7--windows-msvc19.11.0"
  51.  
  52. ; Function Attrs: nounwind
  53. define arm_aapcs_vfpcc void @func2(i32 %a) local_unnamed_addr #0 {
  54. entry:
  55. %0 = alloca i8, i32 %a, align 8
  56. call arm_aapcs_vfpcc void @func(i8* nonnull %0) #2
  57. ret void
  58. }
  59.  
  60. $ clang -target armv7-win32-msvc -S -emit-llvm vla.c -O2
  61. $ cat vla.ll
  62. ; ModuleID = 'vla.c'
  63. source_filename = "vla.c"
  64. target datalayout = "e-m:w-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
  65. target triple = "thumbv7--windows-msvc19.11.0"
  66.  
  67. ; Function Attrs: nounwind
  68. define arm_aapcs_vfpcc void @func2(i32 %a) local_unnamed_addr #0 {
  69. entry:
  70. %vla = alloca i8*, i32 %a, align 4
  71. %0 = bitcast i8** %vla to i8*
  72. call arm_aapcs_vfpcc void @func(i8* nonnull %0) #2
  73. ret void
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement