diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-12-19 08:47:03 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-12-27 05:27:06 -0800 |
commit | 9407058a430316db5299bc7867e4a31f900cd197 (patch) | |
tree | 084c9fae36e32f13f8beea793a4ae220c276971f /gcc/fortran/expr.c | |
parent | e078de24eae8253fd4f24342f65166b525dd99c6 (diff) | |
download | gcc-9407058a430316db5299bc7867e4a31f900cd197.zip gcc-9407058a430316db5299bc7867e4a31f900cd197.tar.gz gcc-9407058a430316db5299bc7867e4a31f900cd197.tar.bz2 |
ix86: Don't use the 'm' constraint for x86_64_general_operand
The 'm' constraint is defined with define_memory_constraint which allows
LRA to convert the operand to the form '(mem (reg X))', where X is a
base register. To prevent LRA from generating '(mem (reg X))' from a
register:
1. Add a 'BM' constraint which is similar to the 'm' constraint, but
is defined with define_constraint.
2. Add a 'm' mode attribute which is mapped to the 'm' constraint for
general_operand and the 'BM' constraint for x86_64_general_operand.
3. Replace the 'm' constraint on <general_operand> with the '<m>'
constraint.
4. Replace the 'm' constraint on x86_64_general_operand with the 'BM'
constraint.
gcc/
PR target/103762
* config/i386/constraints.md (BM): New constraint.
* config/i386/i386.md (m): New mode attribute.
Replace the 'm' constraint on <general_operand> with the '<m>'
constraint.
Replace the 'm' constraint on x86_64_general_operand with the
'BM' constraint.
gcc/testsuite/
* gcc.target/i386/pr103762-1a.c: New test.
* gcc.target/i386/pr103762-1b.c: Likewise.
* gcc.target/i386/pr103762-1c.c: Likewise.
Diffstat (limited to 'gcc/fortran/expr.c')
0 files changed, 0 insertions, 0 deletions