In version 5.21 (and earlier) the following code compiles and runs okay in release and debug builds, but attempting a checkmate compile generates an 'operand incompatible with opcode' error at the top of the program. The problem is cause by the use of a pointer to an integer*1 or 2 in the ibset function. It's also a problem if the first parameter is a member of an ADT that is referenced via a pointer. Workaround is to use an intermediate variable or simply wrap ibset in another function with an explicit integer1 parameter.
program ibtest integer1, target:: i1 integer1, pointer:: i1p
i1 = 0 i1p ⇒ i1 i1p = ibset(i1p, 1) ! incompatible operand compile error in checkmate
print *, i1 end program