Calling a non-void function that has no defined return crashes app?

Hi,

When working with mbed-5.15 + a customized nucleo_f207zg board, I noticed that if I call a non-void function that has no defined return from another function, app will crash.
// Declare function prototype in header file
uint8_t sendCmdResponse(uint8_t _response, uint8_t _responseLen);

// call the non-void function from another function
{
    ......
    sendCmdResponse(response, responseLen);
    ......
}

uint8_t sendCmdResponse(uint8_t _response[], uint8_t _responseLen)
{
    cmdUartMutex.lock();
    for (size_t i = 0; i < _responseLen; i++)
    {
        while (!cmdPort.writeable()) ;
        cmdPort.putc(_response[i]);
    }
    cmdUartMutex.unlock();
}

The following is crash information.

++ MbedOS Fault Handler ++
FaultType: HardFault
Context:
R0   : B13B8305
R1   : B13B8305
R2   : 0000004B
R3   : 00000018
R4   : 08004DE6
R5   : 2000413C
R6   : FFFFFFFF
R7   : 200048B8
R8   : 00000000
R9   : 00000000
R10  : 00000000
R11  : 00000000
R12  : 08004B05
SP   : 2001FFA8
LR   : 08003CB7
PC   : 08004B80
xPSR : 8100000B
PSP  : 20004998
MSP  : 2001FF88
CPUID: 412FC230
HFSR : 40000000
MMFSR: 00000000
BFSR : 00000082
UFSR : 00000000
DFSR : 00000008
AFSR : 00000000
BFAR : B13B8325
Mode : Handler
Priv : Privileged
Stack: MSP

-- MbedOS Fault Handler --

++ MbedOS Error Info ++
Error Status: 0x80FF013D Code: 317 Module: 255
Error Message: Fault exception
Location: 0x8004B80
Error Value: 0x20005644
Current Thread: main <handler> Id: 0x2000413C Entry: 0x8003A5F StackSize: 0x4000 StackMem: 0x200056A8 SP: 0x2001FFA8 
For more info, visit: https://mbed.com/s/error?error=0x80FF013D&tgt=NUCLEO_F207ZG
-- MbedOS Error Info --

This seems to be associated with GCC_ARM V9. When I compiled the same code with GCC_ARM V6( 2017-q1-update), app stopped crashing.

Is this some new/strict feature introduced in newer version of GCC_ARM?