該当スレがわからないので、ここで質問します。
C++ ( コンパイラ VCTK2003 /Ox )

aaa[pos+X1]++; // posは基準位置として
bbb[pos+X1]^=z; // 相対位置X1,X2,...,Xnの値を操作
aaa[pos+X2]++; // X1,X2,...,Xnは定数
bbb[pos+X2]^=z;
以下数回繰り返し、という場合に、

1.X1,X2,...,Xnを自分で即値を書き込む。
2.X1,X2,...,Xnを配列に収めて、for文等でコンパイラの最適化に頼る。
が考えられるのですが、

出力される.asmファイルを見ると、
1より2のほうが、より最適化されているのですが、
もともとグローバルで扱いたいX1,X2,...,Xnの配列を
対象ファイルの外に置いたとたん
2では即値展開されなくなってしまいます(都度メモリ読み込みしている)。

自分が即値で書き込むよりも、
コンパイラの最適化に頼ったほうがいい状況なので、
対象ファイル外にあっても即値展開して欲しいのですが、
いい方法はないでしょうか?
(開き直って全ファイルに、staticとして配置するのも手なんですが...)