I am told that AmlCode is defined as array of (unsigned) char in some other file. Declaring it as some other type here is not valid C, and *will* break with GCC, with some options (-combine or LTO at least) -- it will not compile.
The biggest worry for me is incorrect execution. If it doesn't
compile
when it breaks, then that's a good thing.
It will probably _work_ with current GCC and no whole-program stuff, but how do you *know* it does? Better to just fix it.
I misunderstood you. I thought you were saying that it wouldn't compile if you used those options, but that it would work otherwise.
If you use whole-program optimisation, it will not even compile, indeed. If you do _not_ use whole-program optimisation, it will compile, and likely even work -- but no guarantees. The "workaround" correct code isn't very hard or expensive, best to use that.
It is a pity that GCC cannot detect all problems in your code, but that is equivalent to solving the halting problem (_and_ reading your mind ;-) ).
Segher