aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-12-19 08:47:03 -0800
committerH.J. Lu <hjl.tools@gmail.com>2021-12-27 05:27:06 -0800
commit9407058a430316db5299bc7867e4a31f900cd197 (patch)
tree084c9fae36e32f13f8beea793a4ae220c276971f /gcc/fortran/expr.c
parente078de24eae8253fd4f24342f65166b525dd99c6 (diff)
downloadgcc-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