I've done some more investigation and actually, generally speaking C++ 
exceptions do seem to work on PPC but for some reason not always. I experienced 
some rather strange behaviour, e.g.

  // this throw() worked correctly
  throw(0);
  if (_config->isInited) return {};

  // this throw() didn't work and caused a program freeze
  if (_config->isInited) return {};
  throw(0);

The next thing I tried was turning the optimizer off (previously I was always 
compiling with -O2). Interestingly, turning the optimizer off solved the 
problem. When compiling without -O2 exceptions seem to work fine and there is 
no strange behaviour any longer but even using the lowest level of 
optimization, i.e. just -O, will bring the problems back. 

So the good news is that I've found a workaround. Turning the optimizer off 
will make exceptions work again but the bad news is that of course it looks 
like there is some major issue in the optimizer because enabling it seems to 
break exceptions...

FWIW, I've also tried gcc-mp-7 (MacPorts gcc7 7.5.0_4) which AFAICS is the most 
recent gcc available for PPC but it shows the same behaviour.

On 27.05.2024 at 18:46 Ken Cunningham wrote:

> do exceptions work with the default gcc7 compiler?

Reply via email to