https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69956
Bug ID: 69956 Summary: [ICE] Wrong vector type @ fold-const Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: kyukhin at gcc dot gnu.org Target Milestone: --- Created attachment 37789 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37789&action=edit Reproducer Hello, Attached testcase produces ICE when compiled as following: gcc -S -O2 -march=skylake-avx512 repro.i -ftree-vectorize I observe the ICE since 02.02.2016 /nfs/ims/home/kyukhin/repro.i:2:1: internal compiler error: tree check: expected vector_type, have integer_type in co\ nst_unop, at fold-const.c:1665 fn1() { ^~~ 0xda1f9c tree_check_failed(tree_node const*, char const*, int, char const*, ...) /export/users/gnutester/stability/svn/trunk/gcc/tree.c:9637 0x860742 tree_check(tree_node*, char const*, int, char const*, tree_code) /export/users/gnutester/stability/svn/trunk/gcc/tree.h:3006 0x860742 const_unop(tree_code, tree_node*, tree_node*) /export/users/gnutester/stability/svn/trunk/gcc/fold-const.c:1665 0xe7f639 gimple_resimplify1(gimple**, code_helper*, tree_node*, tree_node**, tree_node* (*)(tree_node*)) /export/users/gnutester/stability/svn/trunk/gcc/gimple-match-head.c:85 0xee84b3 gimple_simplify(gimple*, code_helper*, tree_node**, gimple**, tree_node* (*)(tree_node*), tree_node* (*)(tre\ e_node*)) /export/users/gnutester/stability/svn/trunk/gcc/gimple-match-head.c:622 0x8a0933 gimple_fold_stmt_to_constant_1(gimple*, tree_node* (*)(tree_node*), tree_node* (*)(tree_node*)) /export/users/gnutester/stability/svn/trunk/gcc/gimple-fold.c:4981 0xc409d2 back_propagate_equivalences /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-dom.c:881 0xc409d2 record_temporary_equivalences(edge_def*, const_and_copies*, avail_exprs_stack*) /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-dom.c:963 0xd0663a thread_through_normal_block /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-threadedge.c:858 0xd07a22 thread_across_edge(gcond*, edge_def*, bool, const_and_copies*, avail_exprs_stack*, tree_node* (*)(gimple*, g\ imple*, avail_exprs_stack*)) /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-threadedge.c:1005 0xc404c0 dom_opt_dom_walker::thread_across_edge(edge_def*) /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-dom.c:989 0xc406eb dom_opt_dom_walker::after_dom_children(basic_block_def*) /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-dom.c:1423 0x11a47a7 dom_walker::walk(basic_block_def*) /export/users/gnutester/stability/svn/trunk/gcc/domwalk.c:307 0xc432a0 execute /export/users/gnutester/stability/svn/trunk/gcc/tree-ssa-dom.c:614 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. I suspect scalar masks.