brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · ed726df Raw
42 lines · plain
1; RUN: llc -emit-call-site-info -mtriple arm-linux-gnu -debug-entry-values %s -o - -stop-before=finalize-isel | FileCheck %s2; Verify that Selection DAG knows how to recognize simple function parameter forwarding registers.3; Produced from:4; extern int fn1(int,int,int);5; int fn2(int a, int b, int c) {6;   int local = fn1(a+b, c, 10);7;   if (local > 10)8;     return local + 10;9;   return local;10; }11; clang -g -O2 -target arm-linux-gnu -S -emit-llvm %s12; CHECK: callSites:13; CHECK-NEXT:   - { bb: {{.*}}, offset: {{.*}}, fwdArgRegs:14; CHECK-NEXT:       - { arg: 0, reg: '$r0' }15; CHECK-NEXT:       - { arg: 1, reg: '$r1' }16; CHECK-NEXT:       - { arg: 2, reg: '$r2' } }17 18; ModuleID = 'call-site-info-output.c'19source_filename = "call-site-info-output.c"20target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"21target triple = "armv4t-unknown-linux-gnu"22 23; Function Attrs: nounwind24define dso_local arm_aapcscc i32 @fn2(i32 %a, i32 %b, i32 %c) {25entry:26  %add = add nsw i32 %b, %a27  %call = tail call arm_aapcscc i32 @fn1(i32 %add, i32 %c, i32 10)28  %cmp = icmp sgt i32 %call, 1029  %add1 = select i1 %cmp, i32 %c, i32 030  %retval.0 = add nsw i32 %add1, %call31  ret i32 %retval.032}33 34declare dso_local arm_aapcscc i32 @fn1(i32, i32, i32) local_unnamed_addr35 36; Function Attrs: nounwind readnone speculatable willreturn37declare void @llvm.dbg.value(metadata, metadata, metadata)38 39!llvm.ident = !{!0}40 41!0 = !{!"clang version 10.0.0"}42