Taken from a downstream fork: https://github.com/apple/llvm-project/pull/3461/files.
IBAction and IBOutlet are defined when compiling with ObjC/ObjC++ enabled. This can cause issues due to macro expansion when we look through these header files while compiling in ObjC++ mode. This patch temporarily undefs these macros so that the compiler doesn't try to expand them when looking through these attribute headers.