[PATCH] ARM: Windows on ARM Hazard recognition support
Saleem Abdulrasool
abdulras at fb.com
Fri Apr 4 23:10:38 PDT 2014
Yes, the Constant Pool Island injection is one case where the instruction was split up even if I bundled them. Its quite possible that I did not get everything correct. The resultant MI would look something like this:
BUNDLE
* %R0<def> = t2MOVi16 <ga:@"global">[TF=1], pred:14, pred:%noreg
* %R0<def,tied1> = t2MOVTi16 %R0<tied0>, <ga:@"global">[TF=2], pred:14, pred:%noreg
This would then get split up as such:
%R0<def> = t2MOVi16 <ga:@"global">[TF=1], pred:14, pred:%noreg
t2B <BB#3>, pred:14, pred:%noreg
CONSTPOOL_ENTRY 1, <cp#1>, 4
%R0<def,tied1> = t2MOVTi16 %R0<tied0>, <ga:@"global">[TF=2], pred:14, pred:%noreg
While this is perfectly fine on other targets, on Windows, this must remain bundled as the relocation is applied to the consecutive 32-bits. The result is that the relocation would corrupt the instruction stream.
Unfortunately, I do not have a test case readily available which can demonstrate this.
http://llvm-reviews.chandlerc.com/D3254
More information about the llvm-commits
mailing list