[PATCH] D16141: [TableGen] Fix sort order of asm operand classes

Oliver Stannard via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 13 04:01:27 PST 2016


olista01 created this revision.
olista01 added reviewers: dblaikie, dexonsmith.
olista01 added a subscriber: llvm-commits.
olista01 set the repository for this revision to rL LLVM.
Herald added a subscriber: aemerson.

This is a fix for https://llvm.org/bugs/show_bug.cgi?id=22796.

The previous implementation of ClassInfo::operator< allowed cycles of classes such that x < y < z < x, meaning that a list of them cannot be correctly sorted, and the sort order could differ with different standard libraries.

The original implementation sorted classes by ValueName if they were otherwise equal. This isn't strictly necessary, but some backends seem to accidentally rely on it. If I reverse this comparison I get 8 test failures spread across the AArch64, Mips and X86 backends, so I have left it in until those backends can be fixed.

There was one case in the X86 backend where the observable behaviour of the assembler is changed by this patch. This was because some of the memory asm operands were not marked as children of X86MemAsmOperand.

This bug caused my patch to add the ARMv8.2 FP16 AArch32 scalar instructions (http://reviews.llvm.org/rL255762) to fail on windows.

Repository:
  rL LLVM

http://reviews.llvm.org/D16141

Files:
  lib/Target/X86/X86InstrInfo.td
  utils/TableGen/AsmMatcherEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16141.44733.patch
Type: text/x-patch
Size: 5274 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160113/0228ec88/attachment.bin>


More information about the llvm-commits mailing list