x86: optimize away pointless segment overrides
When optimizing there's no point keeping the segment overrides when we warn about their presence in the first place.
This commit is contained in:
parent
514a8bb031
commit
92334ad2c6
|
@ -1,4 +1,11 @@
|
|||
2020-02-XX Jan Beulich <jbeulich@suse.com>
|
||||
2020-02-14 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (process_operands): Drop ineffectual segment
|
||||
overrides when optimizing.
|
||||
* testsuite/gas/i386/lea-optimize.d: New.
|
||||
* testsuite/gas/i386/i386.exp: Run new test.
|
||||
|
||||
2020-02-14 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (process_operands): Also check insn prefix
|
||||
for ineffectual segment override warning. Don't cover possible
|
||||
|
|
|
@ -7165,10 +7165,17 @@ duplicate:
|
|||
}
|
||||
|
||||
if ((i.seg[0] || i.prefix[SEG_PREFIX])
|
||||
&& !quiet_warnings
|
||||
&& i.tm.base_opcode == 0x8d /* lea */
|
||||
&& !is_any_vex_encoding(&i.tm))
|
||||
as_warn (_("segment override on `%s' is ineffectual"), i.tm.name);
|
||||
{
|
||||
if (!quiet_warnings)
|
||||
as_warn (_("segment override on `%s' is ineffectual"), i.tm.name);
|
||||
if (optimize)
|
||||
{
|
||||
i.seg[0] = NULL;
|
||||
i.prefix[SEG_PREFIX] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* If a segment was explicitly specified, and the specified segment
|
||||
is not the default, use an opcode prefix to select it. If we
|
||||
|
|
|
@ -502,6 +502,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
|
|||
run_list_test "optimize-6a" "-I${srcdir}/$subdir -march=+noavx -al"
|
||||
run_dump_test "optimize-6b"
|
||||
run_list_test "optimize-7" "-I${srcdir}/$subdir -march=+noavx2 -al"
|
||||
run_dump_test "lea-optimize"
|
||||
run_dump_test "align-branch-1a"
|
||||
run_dump_test "align-branch-1b"
|
||||
run_dump_test "align-branch-1c"
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#as: -O -q
|
||||
#objdump: -dw
|
||||
#name: i386 LEA-like segment overrride dropping
|
||||
#source: lea.s
|
||||
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+ <start>:
|
||||
[ ]*[0-9a-f]+:[ ]+8d 00[ ]+lea[ ]+\(%eax\),%eax
|
||||
[ ]*[0-9a-f]+:[ ]+8d 00[ ]+lea[ ]+\(%eax\),%eax
|
||||
#pass
|
Loading…
Reference in New Issue