diff options
author | Jim Stichnoth <stichnot@chromium.org> | 2012-12-14 11:45:03 -0800 |
---|---|---|
committer | Jim Stichnoth <stichnot@chromium.org> | 2012-12-14 11:45:03 -0800 |
commit | e64e31f908ef4e0d2361cacf94c4e513d826c3e1 (patch) | |
tree | efda74eb9841be181e8b5707e9642e05da8f0f23 /lib/CodeGen/DFAPacketizer.cpp | |
parent | 2fb9f8f3cbeab81064efb3b471a5863779037c23 (diff) |
Prevent FastISel X86_64 from generating bad instructions for NaCl.
If the addressing mode matches certain patterns, then FastISel for the
instruction is rejected and regular ISel is used, where
X86DAGToDAGISel::LegalizeAddressingModeForNaCl() does the necessary
transformations.
The most common problem (which shows up in spec2k gcc and crafty) is
when a register holds a negative offset indexing an interior pointer
into a global struct/array, e.g. global_var[10+reg] where
&global_var[10] is a precomputed constant and reg is negative.
BUG= http://code.google.com/p/nativeclient/issues/detail?id=3211
TEST= On the x86-64 platform, run 176.gcc from spec2k with FastISel
forced, e.g. by modifying pnacl-translate.py to set default
FAST_TRANSLATION=1 and uncommenting the "-fast-isel" flag in the
LLC_FLAGS_FAST_X8664 definition.
Review URL: https://codereview.chromium.org/11543023
Diffstat (limited to 'lib/CodeGen/DFAPacketizer.cpp')
0 files changed, 0 insertions, 0 deletions