<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - regression: assertion triggered in DwarfUnit"
href="https://bugs.llvm.org/show_bug.cgi?id=40198">40198</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>regression: assertion triggered in DwarfUnit
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>All
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>release blocker
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>DebugInfo
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>andrew@ziglang.org
</td>
</tr>
<tr>
<th>CC</th>
<td>jdevlieghere@apple.com, keith.walker@arm.com, llvm-bugs@lists.llvm.org, paul_robinson@playstation.sony.com
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=21282" name="attach_21282" title="test.ll">attachment 21282</a> <a href="attachment.cgi?id=21282&action=edit" title="test.ll">[details]</a></span>
test.ll
This is a regression in trunk from LLVM 7.0.0. The Zig Standard Library tests
in --release-safe mode trigger an assertion in LLVM trunk, but not in LLVM
7.0.0.
Trunk commit:
commit 99cd11ca6529d6b0f3ef38bc4933c78158334771 (HEAD -> master, origin/master,
origin/HEAD)
Author: Robert Widmann <<a href="mailto:devteam.codafi@gmail.com">devteam.codafi@gmail.com</a>>
Date: Tue Jan 1 19:03:37 2019 +0000
[LLVM-C] bool -> LLVMBool
Backtrace, with some debug info printed:
#31 0x0000000001d9cc8b in ZigLLVMTargetMachineEmitToFile
(targ_machine_ref=0xaa049e0, module_ref=0xaa01f70, filename=0x4616c3c0
"zig-cache/test.o", output_type=ZigLLVM_EmitBinary,
error_message=0x7fffffffb2a8,
is_debug=false, is_small=false, time_report=false) at
/store/dev/zig/src/zig_llvm.cpp:193
193 MPM.run(*module);
(gdb)
#30 0x0000000005ee7bed in llvm::legacy::PassManager::run (this=0x7fffffffafc0,
M=...) at /store/dev/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1888
1888 return PM->run(M);
(gdb)
#29 0x0000000005ee79be in llvm::legacy::PassManagerImpl::run (this=0x3b4bf250,
M=...) at /store/dev/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1857
1857 Changed |= getContainedManager(Index)->runOnModule(M);
(gdb)
#28 0x0000000005ee7226 in (anonymous namespace)::MPPassManager::runOnModule
(this=0xefd97a0, M=...) at
/store/dev/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1744
1744 LocalChanged |= MP->runOnModule(M);
(gdb)
#27 0x0000000005ee6e7a in llvm::FPPassManager::runOnModule (this=0x4662bbe0,
M=...) at /store/dev/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1679
1679 Changed |= runOnFunction(F);
(gdb)
#26 0x0000000005ee6c56 in llvm::FPPassManager::runOnFunction (this=0x4662bbe0,
F=...) at /store/dev/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1644
1644 LocalChanged |= FP->runOnFunction(F);
(gdb)
#25 0x0000000004b5dca2 in llvm::MachineFunctionPass::runOnFunction
(this=0xbaab500, F=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:74
74 bool RV = runOnMachineFunction(MF);
(gdb)
#24 0x00000000043557d3 in llvm::X86AsmPrinter::runOnMachineFunction
(this=0xbaab500, MF=...) at
/store/dev/llvm-project/llvm/lib/Target/X86/X86AsmPrinter.cpp:78
78 EmitFunctionBody();
(gdb)
#23 0x0000000004929fa3 in llvm::AsmPrinter::EmitFunctionBody (this=0xbaab500)
at /store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:1230
1230 HI.Handler->endFunction(MF);
(gdb)
#22 0x0000000004946e97 in llvm::DebugHandlerBase::endFunction (this=0x4c9d2860,
MF=0x4efc9380) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp:319
319 endFunctionImpl(MF);
(gdb) p MF->dump()
# Machine code for function init_vdso_clock_gettime: NoPHIs, TracksLiveness,
NoVRegs
bb.0.Then:
DBG_VALUE $edi, $noreg, !"clk", !DIExpression(), debug-location !3639;
index.zig:968:35 line no:968
DBG_VALUE $rsi, $noreg, !"ts", !DIExpression(), debug-location !3640;
index.zig:968:45 line no:968
DBG_VALUE 0, $noreg, !"addr", !DIExpression(), debug-location !3641;
index.zig:969:5 line no:969
DBG_VALUE 0, $noreg, !"f", !DIExpression(), debug-location !3642;
index.zig:970:5 line no:970
renamable $rax = LEA64r $rip, 1, $noreg, @init_vdso_clock_gettime, $noreg,
debug-location !3643; index.zig:971:9
renamable $ecx = XOR32rr undef $ecx(tied-def 0), undef $ecx, implicit-def
dead $eflags, implicit-def $rcx
LCMPXCHG64 $rip, 1, $noreg, @vdso_clock_gettime, $noreg, killed renamable
$rcx, implicit-def dead $rax, implicit-def dead $eflags, implicit $rax,
debug-location !3643 :: (volatile load store monotonic monotonic 8 on `i64*
bitcast (i64 (i32, %timespec.41*)** @vdso_clock_gettime to i64*)`);
index.zig:971:9
$rax = MOV64ri32 -38, debug-location !3645; index.zig:972:28
RETQ $rax, debug-location !3645; index.zig:972:28
# End machine code for function init_vdso_clock_gettime.
$2 = void
(gdb) up
#21 0x0000000004958f84 in llvm::DwarfDebug::endFunctionImpl (this=0x4c9d2860,
MF=0x4efc9380) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:1615
1615 DIE &ScopeDIE = TheCU.constructSubprogramScopeDIE(SP, FnScope);
(gdb)
#20 0x0000000004a1c3b5 in llvm::DwarfCompileUnit::constructSubprogramScopeDIE
(this=0xaa07fd0, Sub=0x4ac18250, Scope=0x4e889b10) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:751
751 if (DIE *ObjectPointer = createAndAddScopeChildren(Scope,
ScopeDIE))
(gdb)
#19 0x0000000004a1c4da in llvm::DwarfCompileUnit::createAndAddScopeChildren
(this=0xaa07fd0, Scope=0x4e889b10, ScopeDIE=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:773
773 DIE *ObjectPointer = createScopeChildrenDIE(Scope, Children);
(gdb)
#18 0x0000000004a1c2cd in llvm::DwarfCompileUnit::createScopeChildrenDIE
(this=0xaa07fd0, Scope=0x4e889b10, Children=..., HasNonScopeChildren=0x0)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:736
736 constructScopeDIE(LS, Children);
(gdb)
#17 0x0000000004a1a4d8 in llvm::DwarfCompileUnit::constructScopeDIE
(this=0xaa07fd0, Scope=0x4eafc440, FinalChildren=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:396
396 createScopeChildrenDIE(Scope, Children, &HasNonScopeChildren);
(gdb)
#16 0x0000000004a1c2cd in llvm::DwarfCompileUnit::createScopeChildrenDIE
(this=0xaa07fd0, Scope=0x4eafc440, Children=...,
HasNonScopeChildren=0x7fffffff9e17)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:736
736 constructScopeDIE(LS, Children);
(gdb)
#15 0x0000000004a1a4d8 in llvm::DwarfCompileUnit::constructScopeDIE
(this=0xaa07fd0, Scope=0x4e889c50, FinalChildren=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:396
396 createScopeChildrenDIE(Scope, Children, &HasNonScopeChildren);
(gdb)
#14 0x0000000004a1c2cd in llvm::DwarfCompileUnit::createScopeChildrenDIE
(this=0xaa07fd0, Scope=0x4e889c50, Children=...,
HasNonScopeChildren=0x7fffffff9a87)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:736
736 constructScopeDIE(LS, Children);
(gdb)
#13 0x0000000004a1a4d8 in llvm::DwarfCompileUnit::constructScopeDIE
(this=0xaa07fd0, Scope=0x4e889d20, FinalChildren=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:396
396 createScopeChildrenDIE(Scope, Children, &HasNonScopeChildren);
(gdb)
#12 0x0000000004a1c2cd in llvm::DwarfCompileUnit::createScopeChildrenDIE
(this=0xaa07fd0, Scope=0x4e889d20, Children=...,
HasNonScopeChildren=0x7fffffff96f7)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:736
736 constructScopeDIE(LS, Children);
(gdb)
#11 0x0000000004a1a4d8 in llvm::DwarfCompileUnit::constructScopeDIE
(this=0xaa07fd0, Scope=0x4e8896d0, FinalChildren=...) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:396
396 createScopeChildrenDIE(Scope, Children, &HasNonScopeChildren);
(gdb)
#10 0x0000000004a1bfd4 in llvm::DwarfCompileUnit::createScopeChildrenDIE
(this=0xaa07fd0, Scope=0x4e8896d0, Children=...,
HasNonScopeChildren=0x7fffffff9367)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:719
719 Children.push_back(constructVariableDIE(*DV, *Scope,
ObjectPointer));
(gdb)
#9 0x0000000004a1b822 in llvm::DwarfCompileUnit::constructVariableDIE
(this=0xaa07fd0, DV=..., Scope=..., ObjectPointer=@0x7fffffff91c8: 0x0)
at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:624
624 auto Var = constructVariableDIE(DV, Scope.isAbstractScope());
(gdb)
#8 0x0000000004a1aed6 in llvm::DwarfCompileUnit::constructVariableDIE
(this=0xaa07fd0, DV=..., Abstract=false) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:522
522 auto D = constructVariableDIEImpl(DV, Abstract);
(gdb)
#7 0x0000000004a1b3bb in llvm::DwarfCompileUnit::constructVariableDIEImpl
(this=0xaa07fd0, DV=..., Abstract=false) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:581
581 addConstantValue(*VariableDie, DVInsn->getOperand(0),
DV.getType());
(gdb)
#6 0x00000000049a2ff2 in llvm::DwarfUnit::addConstantValue (this=0xaa07fd0,
Die=..., MO=..., Ty=0x2a6407a0) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp:523
523 addConstantValue(Die, isUnsignedDIType(DD, Ty), MO.getImm());
(gdb)
#5 0x00000000049a2bac in isUnsignedDIType (DD=0x4c9d2860, Ty=0x2a6407a0) at
/store/dev/llvm-project/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp:470
470 auto *BTy = cast<DIBasicType>(Ty);
(gdb)
#4 0x0000000003ad97b2 in llvm::cast<llvm::DIBasicType, llvm::DIType const>
(Val=0x2a6407a0) at
/store/dev/llvm-project/llvm/include/llvm/Support/Casting.h:255
255 assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
(gdb) ptype X
type = class llvm::DIBasicType : public llvm::DIType {
private:
unsigned int Encoding;
DIBasicType(llvm::LLVMContext &, llvm::Metadata::StorageType, unsigned int,
uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags,
llvm::ArrayRef<llvm::Metadata*>);
~DIBasicType();
static llvm::DIBasicType * getImpl(llvm::LLVMContext &, unsigned int,
llvm::StringRef, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags,
llvm::Metadata::StorageType, bool);
static llvm::DIBasicType * getImpl(llvm::LLVMContext &, unsigned int,
llvm::MDString *, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags,
llvm::Metadata::StorageType, bool);
llvm::TempDIBasicType cloneImpl(void) const;
public:
static llvm::DIBasicType * get(llvm::LLVMContext &, unsigned int,
llvm::StringRef);
static llvm::DIBasicType * get(llvm::LLVMContext &, unsigned int,
llvm::StringRef, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::DIBasicType * get(llvm::LLVMContext &, unsigned int,
llvm::MDString *, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::DIBasicType * getIfExists(llvm::LLVMContext &, unsigned int,
llvm::StringRef);
static llvm::DIBasicType * getIfExists(llvm::LLVMContext &, unsigned int,
llvm::StringRef, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::DIBasicType * getIfExists(llvm::LLVMContext &, unsigned int,
llvm::MDString *, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::DIBasicType * getDistinct(llvm::LLVMContext &, unsigned int,
llvm::StringRef);
static llvm::DIBasicType * getDistinct(llvm::LLVMContext &, unsigned int,
llvm::StringRef, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::DIBasicType * getDistinct(llvm::LLVMContext &, unsigned int,
llvm::MDString *, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::TempDIBasicType getTemporary(llvm::LLVMContext &, unsigned
int, llvm::StringRef);
static llvm::TempDIBasicType getTemporary(llvm::LLVMContext &, unsigned
int, llvm::StringRef, uint64_t, uint32_t, unsigned int, llvm::DINode::DIFlags);
static llvm::TempDIBasicType getTemporary(llvm::LLVMContext &, unsigned
int, llvm::MDString *, uint64_t, uint32_t, unsigned int,
llvm::DINode::DIFlags);
llvm::TempDIBasicType clone(void) const;
unsigned int getEncoding(void) const;
llvm::Optional<llvm::DIBasicType::Signedness> getSignedness(void) const;
static bool classof(const llvm::Metadata *);
}
(gdb)
Source code:
var vdso_clock_gettime = init_vdso_clock_gettime;
extern fn init_vdso_clock_gettime(clk: i32, ts: *timespec) usize {
const addr = vdso.lookup(VDSO_CGT_VER, VDSO_CGT_SYM);
var f = @intToPtr(@typeOf(init_vdso_clock_gettime), addr);
_ = @cmpxchgStrong(@typeOf(init_vdso_clock_gettime), &vdso_clock_gettime,
init_vdso_clock_gettime, f, builtin.AtomicOrder.Monotonic,
builtin.AtomicOrder.Monotonic);
if (@ptrToInt(f) == 0) return @bitCast(usize, isize(-ENOSYS));
return f(clk, ts);
}
Module LLVM IR attached. You can use `clang -c test.ll -O3` to reproduce the
assertion.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>