mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
[inline asm] Don't reject duplicated matching constraints
They're harmless and it's easy to generate them from clang, leading to a crash in LLVM. Found by afl-fuzz. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233500 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
041c54b85e
commit
155328790b
@ -167,7 +167,8 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str,
|
|||||||
// Note that operand #n has a matching input.
|
// Note that operand #n has a matching input.
|
||||||
scInfo.MatchingInput = ConstraintsSoFar.size();
|
scInfo.MatchingInput = ConstraintsSoFar.size();
|
||||||
} else {
|
} else {
|
||||||
if (ConstraintsSoFar[N].hasMatchingInput())
|
if (ConstraintsSoFar[N].hasMatchingInput() &&
|
||||||
|
ConstraintsSoFar[N].MatchingInput != ConstraintsSoFar.size())
|
||||||
return true;
|
return true;
|
||||||
// Note that operand #n has a matching input.
|
// Note that operand #n has a matching input.
|
||||||
ConstraintsSoFar[N].MatchingInput = ConstraintsSoFar.size();
|
ConstraintsSoFar[N].MatchingInput = ConstraintsSoFar.size();
|
||||||
|
12
test/CodeGen/X86/inline-asm-duplicated-constraint.ll
Normal file
12
test/CodeGen/X86/inline-asm-duplicated-constraint.ll
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
; RUN: llc < %s -march=x86-64 -no-integrated-as -mtriple=x86_64-linux-gnu | FileCheck %s
|
||||||
|
|
||||||
|
; CHECK-LABEL: test1:
|
||||||
|
; CHECK: movl (%rdi), %eax
|
||||||
|
; CHECK: nop
|
||||||
|
; CHECK: movl %eax, (%rdi)
|
||||||
|
; CHECK: ret
|
||||||
|
define void @test1(i32* %l) {
|
||||||
|
%load = load i32, i32* %l
|
||||||
|
call void asm "nop", "=*rmrm,0m0m,~{dirflag},~{fpsr},~{flags}"(i32* %l, i32 %load)
|
||||||
|
ret void
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user