1 /* Copyright 2018-2020 Free Software Foundation, Inc. 2 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 3 of the License, or 6 (at your option) any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 volatile int e = 0; 17 18 void 19 baz (void) 20 { 21 asm ("baz_label: .globl baz_label"); 22 } /* baz end */ 23 24 void 25 foo_low (void) 26 { /* foo_low prologue */ 27 asm ("foo_low_label: .globl foo_low_label"); 28 baz (); /* foo_low baz call */ 29 asm ("foo_low_label2: .globl foo_low_label2"); 30 } /* foo_low end */ 31 32 void 33 bar (void) 34 { 35 asm ("bar_label: .globl bar_label"); 36 } /* bar end */ 37 38 void 39 foo (void) 40 { /* foo prologue */ 41 asm ("foo_label: .globl foo_label"); 42 bar (); /* foo bar call */ 43 asm ("foo_label2: .globl foo_label2"); 44 if (e) foo_low (); /* foo foo_low call */ 45 asm ("foo_label3: .globl foo_label3"); 46 } /* foo end */ 47