info.fs.sidefx considers discard() to be a side effect. That definition is... dubious at best. It certainly isn't the definition needed for forward pixel kill. The only reason pixels couldn't be killed by FPK is if the shader has side effects in the sense of writing to memory. Use that more precise condition so FPK works more often.