Ah, the current target is XC16, which IIRC is GCC 4.something, but don't mind the compiler version too much.
That would explain it. If I'm not mistaken, C11 has been well supported and default since v.6.x? And GCC is now at 10.2.
GCC 4.x? Yeah. Haven't worked with XC16 in a few years now, but apparently Microchip has never gone past GCC 4.5.x for XC16. I dunno what's their intention there. Anyway, as I said, even with the latest GCC, I think stdatomic may not be guaranteed to be provided.
And yes, depending on what it is exactly you need to guard against concurrent access, you may not need to do anything. For instance, if you just need to guard some index increment/decrement and this operation is natively atomic, there is nothing to be done. But often you'll need to guard several consecutive instructions, in which case you need to implement some kind of mutex (selectively disabling interrupts here being one simple way of doing it.) For instance, if you're implementing a circular buffer, then the index increment also needs to roll over. If the buffer size is a power of two, then it just requires a mask (AND operation.) I don't know or don't remember if those PICs have instructions to atomically do both an increment and a mask for circular buffer indexing. If so and this operation is atomic, then again you wouldn't necessarily need to implement any guarding. That said, if you're strictly programming in C or C++, I would be wary of counting on the compiler using any exotic instruction by itself, or it could depend on optimization level, so that's not good.
All in all, unless again you have access to C11 and stdatomic is implemented on a given platform, you're pretty much on your own for atomic operations. You may try and use some compiler built-ins if available, but that wouldn't be very generic either.
IMHO, if you really want something generic here, I think some generic implementation of simple mutexes would fit the bill. You can implement that with functions or macros and make the platform-dependent implementation through conditional compilation. If you want something already made and tested, and supporting a decent range of targets, you may consider extracting the relevant part (only the minimum required for concurrent access) from some open RTOS.