<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 - Assertion failed: (V->getType()->isPointerTy() && "V must be pointer type")"
href="https://bugs.llvm.org/show_bug.cgi?id=32902">32902</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Assertion failed: (V->getType()->isPointerTy() && "V must be pointer type")
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>MacOS X
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Scalar Optimizations
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>vadimcn@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>opt bugpoint-reduced-simplified.ll -sroa
results in assertion:
Assertion failed: (V->getType()->isPointerTy() && "V must be pointer type"),
function isKnownNonNull, file
/Users/vadimcn/llvm/lib/Analysis/ValueTracking.cpp, line 3419.
----
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "bugpoint-output-46383f3.bc"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-darwin"
%blah.3.39.47.55.59.63.67.95.3.7.11.39 = type {
%blah2.2.38.46.54.58.62.66.94.2.6.10.38*, [0 x i8],
%str_slice.0.103.206.953.1202.1949.2696.3443.4190.4937.5186.5435.5518.5767.6182.6597.7012.8091.8257.8340.8672.8838.9585.9668.9751.9834.9917.10332.10581.10664.10913.10996.11079.11162.11891.11974.12390.1.37.45.53.57.61.65.93.1.5.9.37*,
[0 x i8] }
%blah2.2.38.46.54.58.62.66.94.2.6.10.38 = type {
%"option::Option<char>.91.194.286.1033.1282.2029.2776.3523.4270.5017.5266.5515.5598.5847.6262.6677.7092.8171.8337.8420.8752.8918.9665.9748.9831.9914.9997.10412.10661.10744.10993.11076.11159.11242.11971.12054.12389.0.36.44.52.56.60.64.92.0.4.8.36"*,
[0 x i8], i8*, [0 x i8],
%str_slice.0.103.206.953.1202.1949.2696.3443.4190.4937.5186.5435.5518.5767.6182.6597.7012.8091.8257.8340.8672.8838.9585.9668.9751.9834.9917.10332.10581.10664.10913.10996.11079.11162.11891.11974.12390.1.37.45.53.57.61.65.93.1.5.9.37*,
[0 x i8] }
%"option::Option<char>.91.194.286.1033.1282.2029.2776.3523.4270.5017.5266.5515.5598.5847.6262.6677.7092.8171.8337.8420.8752.8918.9665.9748.9831.9914.9997.10412.10661.10744.10993.11076.11159.11242.11971.12054.12389.0.36.44.52.56.60.64.92.0.4.8.36"
= type { i32, [0 x i32], [1 x i32] }
%str_slice.0.103.206.953.1202.1949.2696.3443.4190.4937.5186.5435.5518.5767.6182.6597.7012.8091.8257.8340.8672.8838.9585.9668.9751.9834.9917.10332.10581.10664.10913.10996.11079.11162.11891.11974.12390.1.37.45.53.57.61.65.93.1.5.9.37
= type { i8*, i64 }
declare i32 @rust_eh_personality(...) unnamed_addr
; Function Attrs: uwtable
define void @_ZN4core3fmt9Formatter12pad_integral17h1dcf0f409406b6e5E()
unnamed_addr #0 personality i32 (...)* @rust_eh_personality {
start:
%arg4.i = alloca %blah.3.39.47.55.59.63.67.95.3.7.11.39, align 8
%0 = bitcast %blah.3.39.47.55.59.63.67.95.3.7.11.39* %arg4.i to i64*
store i64 0, i64* %0, align 8, !noalias !0
%1 = getelementptr inbounds %blah.3.39.47.55.59.63.67.95.3.7.11.39,
%blah.3.39.47.55.59.63.67.95.3.7.11.39* %arg4.i, i64 0, i32 0
%2 = load %blah2.2.38.46.54.58.62.66.94.2.6.10.38*,
%blah2.2.38.46.54.58.62.66.94.2.6.10.38** %1, align 8, !alias.scope !3,
!noalias !0, !nonnull !6
unreachable
}
attributes #0 = { uwtable "no-frame-pointer-elim"="true" }
!0 = !{!1}
!1 = distinct !{!1, !2,
!"_ZN4core3fmt9Formatter12with_padding17he89c0cd65ede2490E: argument 0"}
!2 = distinct !{!2,
!"_ZN4core3fmt9Formatter12with_padding17he89c0cd65ede2490E"}
!3 = !{!4}
!4 = distinct !{!4, !5,
!"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17he6d80cba181124abE:
argument 0"}
!5 = distinct !{!5,
!"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17he6d80cba181124abE"}
!6 = !{}
---
I've dumped the function IR just before SROA pass runs mem2reg:
; Function Attrs: uwtable
define void @_ZN4core3fmt9Formatter12pad_integral17h1dcf0f409406b6e5E()
unnamed_addr #0 personality i32 (...)* @rust_eh_personality {
start:
%arg4.i.sroa.0 = alloca i64
store i64 0, i64* %arg4.i.sroa.0
%arg4.i.sroa.0.0. = load i64, i64* %arg4.i.sroa.0, !nonnull !0
%0 = inttoptr i64 %arg4.i.sroa.0.0. to
%blah2.2.38.46.54.58.62.66.94.2.6.10.38*
unreachable
}
So yeah, the result of load is indeed not a pointer type, though it gets cast
to one in the next line.</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>