Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $ cat alloca.c
- void func(void *buf);
- void func2(int a) {
- void *buf = _alloca(a);
- func(buf);
- }
- $ cl -c alloca.c -O2 -GS-
- Microsoft (R) C/C++ Optimizing Compiler Version 19.12.25830.2 for ARM
- Copyright (C) Microsoft Corporation. All rights reserved.
- alloca.c
- $ dumpbin -disasm alloca.obj
- Microsoft (R) COFF/PE Dumper Version 14.12.25830.2
- Copyright (C) Microsoft Corporation. All rights reserved.
- Dump of file alloca.obj
- File Type: COFF OBJECT
- func2:
- 00000000: B598 push {r3,r4,r7,lr}
- 00000002: 466F mov r7,sp
- 00000004: 1DC3 adds r3,r0,#7
- 00000006: 4283 cmp r3,r0
- 00000008: D801 bhi $LN3
- 0000000A: F06F 0307 mvn r3,#7
- $LN3:
- 0000000E: F023 0307 bic r3,r3,#7
- 00000012: 089C lsrs r4,r3,#2
- 00000014: F000 F800 bl __chkstk
- 00000018: EBAD 0D04 sub sp,sp,r4
- 0000001C: 4668 mov r0,sp
- 0000001E: F000 F800 bl func
- 00000022: 46BD mov sp,r7
- 00000024: BD98 pop {r3,r4,r7,pc}
- $ cat vla.c
- void func(void *buf);
- void func2(int a) {
- char *buf[a];
- func(buf);
- }
- $ clang -target armv7-win32-msvc -S -emit-llvm alloca.c -O2
- $ cat alloca.ll
- ; ModuleID = 'alloca.c'
- source_filename = "alloca.c"
- target datalayout = "e-m:w-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
- target triple = "thumbv7--windows-msvc19.11.0"
- ; Function Attrs: nounwind
- define arm_aapcs_vfpcc void @func2(i32 %a) local_unnamed_addr #0 {
- entry:
- %0 = alloca i8, i32 %a, align 8
- call arm_aapcs_vfpcc void @func(i8* nonnull %0) #2
- ret void
- }
- $ clang -target armv7-win32-msvc -S -emit-llvm vla.c -O2
- $ cat vla.ll
- ; ModuleID = 'vla.c'
- source_filename = "vla.c"
- target datalayout = "e-m:w-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
- target triple = "thumbv7--windows-msvc19.11.0"
- ; Function Attrs: nounwind
- define arm_aapcs_vfpcc void @func2(i32 %a) local_unnamed_addr #0 {
- entry:
- %vla = alloca i8*, i32 %a, align 4
- %0 = bitcast i8** %vla to i8*
- call arm_aapcs_vfpcc void @func(i8* nonnull %0) #2
- ret void
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement