Bug 224867

Summary: net/iodine: clang 6 crashes during build
Product: Ports & Packages Reporter: Jan Beich <jbeich>
Component: Individual Port(s)Assignee: Dimitry Andric <dim>
Status: Closed FIXED    
Severity: Affects Only Me CC: dim
Priority: --- Keywords: toolchain
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 224669    
Attachments:
Description Flags
src/iodined.c (compressed, preprocessed)
none
command line args (for clang 6.0) none

Description Jan Beich freebsd_committer freebsd_triage 2018-01-03 15:59:52 UTC
Created attachment 189368 [details]
src/iodined.c (compressed, preprocessed)

CC iodined.c
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)
Target: x86_64-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin

http://package18.nyi.freebsd.org/data/headamd64PR224669-default/2018-01-02_08h32m49s/logs/errors/iodine-0.7.0_1.log
Comment 1 Jan Beich freebsd_committer freebsd_triage 2018-01-03 16:00:35 UTC
Created attachment 189369 [details]
command line args (for clang 6.0)
Comment 2 Dimitry Andric freebsd_committer freebsd_triage 2018-01-04 22:09:19 UTC
Likely upstream bug: https://bugs.llvm.org/show_bug.cgi?id=35773
Comment 3 commit-hook freebsd_committer freebsd_triage 2018-01-15 18:20:40 UTC
A commit references this bug:

Author: dim
Date: Mon Jan 15 18:20:15 UTC 2018
New revision: 328010
URL: https://svnweb.freebsd.org/changeset/base/328010

Log:
  Pull in r322473 from upstream llvm trunk (by Andrei Elovikov):

    [LV] Don't call recordVectorLoopValueForInductionCast for
    newly-created IV from a trunc.

    Summary:
    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.

    Fixes PR35773.

    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
  PR:		224867,224868

Changes:
  head/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Comment 4 Jan Beich freebsd_committer freebsd_triage 2018-01-17 21:03:47 UTC
I confirm, the port builds fine now.

http://beefy12.nyi.freebsd.org/data/head-amd64-default/p459147_s328035/logs/iodine-0.7.0_1.log