https://llvm.org/bugs/show_bug.cgi?id=25945
Bug ID: 25945 Summary: [x64] Improper CFI used for function clobbering FLAGS register Product: libraries Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: Backend: X86 Assignee: unassignedb...@nondot.org Reporter: david.majne...@gmail.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified consider: define i64 @test_intervening_call(i64* %foo, i64 %bar, i64 %baz) { %cx = cmpxchg i64* %foo, i64 %bar, i64 %baz seq_cst seq_cst %v = extractvalue { i64, i1 } %cx, 0 %p = extractvalue { i64, i1 } %cx, 1 call void asm sideeffect "", "~{cc},~{dirflag},~{fpsr},~{flags}"() br i1 %p, label %t, label %f t: ret i64 42 f: ret i64 0 } this results in: test_intervening_call: # @test_intervening_call .Ltmp0: .seh_proc test_intervening_call # BB#0: .Ltmp1: .seh_endprologue movq %rdx, %rax lock cmpxchgq %r8, (%rcx) pushfq <---- uh, oh... popq %rax #APP #NO_APP pushq %rax popfq jne .LBB0_2 # BB#1: # %t movl $42, %eax retq .LBB0_2: # %f xorl %eax, %eax retq .seh_handlerdata Notice how we are manipulating the stack pointer even though we don't have a frame pointer. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs