Alas, no. The only flag that changes is ARROK, which I wait for and clear before starting.

I thought perhaps it was one of those issues that only crop up while debugging, but toggling a line either side of the function confirms that it takes the same amount of time regardless of the value of ARR.

I tried your code on a L053 DISCO with default-after-reset clock setting. I added a read of the status register into a global variable just before and after setting SNGSTRT, and both instances stored zero. CNT at the moment of readout was 5.