The function SetCategory(v) returns void and simply assigns
the value of v to a class member, so there are no trap conditions.
TA, on the other hand, stands for "trap always", so the condition
code is unimportant anyway. Why has the trap instruction been generated?

Usually this is because you have code with undefined behavior, that the compiler cannot make sense of. One typical case is casting a function that is inlined:

  static inline __attribute__ ((always_inline)) int x(int x)
  {
  }

  ...

  ((float (*) (float)) x) (1.0);

The compiler cannot raise a compile-time error, so the best it can do is raise a warning (you probably have one, otherwise it is a bug in GCC) and compile the call to a run-time trap. It can do this because the code is undefined in the first place.

Paolo

Reply via email to