sibcall-6.c

来自「用于进行gcc测试」· C语言 代码 · 共 47 行

C
47
字号
/* A simple check to see whether indirect calls are   being sibcall optimized on targets that do support   this notion, i.e. have the according call patterns   in place.   Copyright (C) 2002 Free Software Foundation Inc.   Contributed by Andreas Bauer <baueran@in.tum.de>  *//* { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* } } *//* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ilp32 && { ! nonpic } } } { "*" } { "" } } *//* { dg-options "-O2 -foptimize-sibling-calls" } */extern void abort (void);extern void exit (int);int foo (int);int bar (int);int (*ptr) (int);int *f_addr;intmain (){  ptr = bar;  foo (7);  exit (0);}intbar (b)     int b;{  if (f_addr == (int*) __builtin_return_address (0))    return b;  else    abort ();}intfoo (f)     int f;{  f_addr = (int*) __builtin_return_address (0);  return (*ptr)(f);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?