1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/MC/X86/align-via-padding-corner.s
Fangrui Song d994c519b3 [X86] Default to -x86-pad-for-align=false to drop assembler difference with or w/o -g
Fix PR48742: the D75203 assembler optimization locates MCRelaxableFragment's
within two MCSymbol's and relaxes some MCRelaxableFragment's to reduce the size
of a MCAlignFragment.  A -g build has more MCSymbol's and therefore may have
different assembler output (e.g. a MCRelaxableFragment (jmp) may have 5 bytes
with -O1 while 2 bytes with -O1 -g).

`.p2align 4, 0x90` is common due to loops. For a larger program, with a
lot of temporary labels, the assembly output difference is somewhat
destined. The cost seems to overweigh the benefits so we default to
-x86-pad-for-align=false until the heuristic is improved.

Reviewed By: skan

Differential Revision: https://reviews.llvm.org/D94542
2021-01-16 16:39:54 -08:00

30 lines
837 B
ArmAsm

# RUN: llvm-mc -mcpu=skylake -filetype=obj -triple x86_64-pc-linux-gnu %s -x86-pad-max-prefix-size=5 -x86-pad-for-align=1 | llvm-objdump -d - | FileCheck %s
# The first test check the correctness cornercase - can't add prefixes on a
# instruction following by a prefix.
.globl labeled_prefix_test
labeled_prefix_test:
# CHECK: 0: 2e 2e 2e 2e 2e e9 06 00 00 00 jmp
# CHECK: a: 3e e9 00 00 00 00 jmp
jmp bar
DS
jmp bar
.p2align 4
bar:
ret
# The second test is similar to the second test - can't add prefixes on a
# instruction following by hardcode.
.p2align 5
.globl labeled_hardcode_test
labeled_hardcode_test:
# CHECK: 20: 2e 2e 2e 2e 2e e9 06 00 00 00 jmp
# CHECK: 2a: 3e e9 00 00 00 00 jmp
jmp baz
.byte 0x3e
jmp baz
.p2align 4
baz:
ret