gcc collects all the initialization code for thread-local storage and puts it in one giant function. In combination with debug mode, this creates a very large stack frame that overflows the stack on aarch64. Work around the problem by placing each initializer expression in its own function, thus reusing the stack. Closes #7509