Created attachment 189368 [details]
src/iodined.c (compressed, preprocessed)
Assertion failed: (!hasVectorValue(Key, Part) && "Vector value already set for part"), function setVectorValue, file /poudriere/jails/projects/clang600-import-amd64/usr/src/contrib/llvm/lib/Transforms/Vectorize/VPlan.h, line 167.
cc: error: unable to execute command: Abort trap
cc: error: clang frontend command failed due to signal (use -v to see invocation)
FreeBSD clang version 6.0.0 (trunk 321545) (based on LLVM 6.0.0svn)
Thread model: posix
Created attachment 189369 [details]
command line args (for clang 6.0)
Likely upstream bug: https://bugs.llvm.org/show_bug.cgi?id=35773
A commit references this bug:
Date: Mon Jan 15 18:20:15 UTC 2018
New revision: 328010
Pull in r322473 from upstream llvm trunk (by Andrei Elovikov):
[LV] Don't call recordVectorLoopValueForInductionCast for
newly-created IV from a trunc.
This method is supposed to be called for IVs that have casts in their
use-def chains that are completely ignored after vectorization under
PSE. However, for truncates of such IVs the same InductionDescriptor
is used during creation/widening of both original IV based on PHINode
and new IV based on TruncInst.
This leads to unintended second call to
recordVectorLoopValueForInductionCast with a VectorLoopVal set to the
newly created IV for a trunc and causes an assert due to attempt to
store new information for already existing entry in the map. This is
wrong and should not be done.
Reviewers: dorit, Ayal, mssimpso
Reviewed By: dorit
Subscribers: RKSimon, dim, dcaballe, hsaito, llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D41913
This should fix "Vector value already set for part" assertions when
building the net/iodine and sysutils/daa2iso ports.
Reported by: jbeich
I confirm, the port builds fine now.