Compiler has no way of knowing whether cFunction() has side effects. For example, it might do a printf() that you would "miss" if the call were optimized out.
Charles -----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Mario Bezzi Sent: Monday, November 22, 2021 9:37 AM To: [email protected] Subject: Re: Curious compiler optimization Apparently not.. int cGlue(void *functParms) { int cFuction(void *); int functRC = cFunction(functParms); return 0; } SOURCE,XREF,SSCOMM,LIST,LANGLVL(EXTENDED),LONGNAME,ASM,RENT,OPT(3) 000D8 End of Prolog 000002 | * 000003 | * int cFuction(void *); 000004 | * 000005 | * int functRC = cFunction(functParms); 000D8 5800 1000 000005 | L r0,functParms(,r1,0) 000DC 58F0 3000 000005 | L r15,=V(cFunction)(,r3,0) 000E0 4110 D098 000005 | LA r1,#MX_TEMP1(,r13,152) 000E4 5000 D098 000005 | ST r0,#MX_TEMP1(,r13,152) 000E8 0DEF 000005 | BASR r14,r15 000006 | * 000007 | * return 0; 000EA 41F0 0000 000007 | LA r15,0 000008 | * } 000EE 000008 | @1L1 DS 0H 000EE Start of Epilog On 11/22/21 6:21 PM, Peter Relson wrote: > Maybe you'd get > the same effect with this program if the __asm was instead a "call" to an > external routine.
