https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69083
Bug ID: 69083 Summary: ICE at -O3 in 64-bit mode on x86_64-linux-gnu (verify_gimple failed) Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com Target Milestone: --- The following code crashes the trunk at -O3 in 64-bit mode on x86_64-linux-gnu. $: gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --prefix=/usr/local/gcc-trunk --enable-languages=c,c++ --disable-werror --enable-multilib Thread model: posix gcc version 6.0.0 20151229 (experimental) [trunk revision 231989] (GCC) $: $: gcc-trunk -c -w small.c -O3 small.c: In function ‘fn1’: small.c:3:6: error: conversion of register to a different size void fn1() { ^~~ VIEW_CONVERT_EXPR<<unnamed type>>(_6); _84 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _85 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _86 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _87 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _88 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _89 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _90 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _91 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _93 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _94 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _95 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _96 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _97 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _98 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _99 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: error: conversion of register to a different size VIEW_CONVERT_EXPR<<unnamed type>>(_6); _100 = VIEW_CONVERT_EXPR<<unnamed type>>(_6); small.c:3:6: internal compiler error: verify_gimple failed 0xb2ff16 verify_gimple_in_cfg(function*, bool) ../../gcc-trunk/gcc/tree-cfg.c:5119 0xa23c37 execute_function_todo ../../gcc-trunk/gcc/passes.c:1958 0xa2452b execute_todo ../../gcc-trunk/gcc/passes.c:2010 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. $: $: cat small.c int a, b, d, e; short c, f; void fn1() { int j; for (; e; e++) { j = 0; for (; j < 3; j++) { f = 7 >> b ? a : b; d |= c == 1 ^ 1 == f; } } } $: