On January 9, 2015 4:10:44 PM CET, Bernd Edlinger <bernd.edlin...@hotmail.de> wrote: >On Fri, 9 Jan 2015 14:04:27, Richard Biener wrote: >> >>> >>> FYI: the VIEW_CONVERT_EXPR did not fail in the >>> gcc_checking_assert (is_gimple_addressable (base)) >>> but much later, somewhere in tree-cfg.c it dropped out. >> >> How did it fail there? It doesn't look like &VIEW_CONVERT_EXPR >> is forbidden. > >without that patch the following ICE happened, >which also happened without the bit-fields patch. >So this had never been working before: > > >/home/ed/gnu/gcc-build/gcc/xgcc -c -B/home/ed/gnu/gcc-build/gcc/ >-gnatws -O2 -fsanitize=thread -gnato -gnatE check_file.adb >check_file.adb: In function 'CHECK_FILE': >check_file.adb:44:1: error: invalid operand in unary operation >_498 = (character[1:15] *) &MEM[(character[1:D.5362] >*)S38b.54_315][_321 ...]{lb: 1 sz: 1}; >check_file.adb:44:1: error: invalid operand in unary operation >_503 = (character[1:15] *) &MEM[(character[1:D.5261] >*)S75b.39_360][_366 ...]{lb: 1 sz: 1}; >check_file.adb:44:1: error: invalid operand in unary operation >_510 = (character[1:10] *) &*S112b.17_112[_120 ...]{lb: 1 sz: 1}; >check_file.adb:44:1: error: invalid operand in unary operation >_508 = (character[1:5] *) &*S112b.17_112[_123 ...]{lb: 1 sz: 1}; >+===========================GNAT BUG >DETECTED==============================+ >| 5.0.0 20150108 (experimental) (x86_64-unknown-linux-gnu) GCC >error: | >| verify_gimple >failed | >| Error detected around >check_file.adb:44:1 | >| Please submit a bug report; see >http://gcc.gnu.org/bugs.html. | >| Use a subject line meaningful to you and us to track the >bug. | >| Include the entire contents of this bug box in the >report. | >| Include the exact command that you >entered. | >| Also include sources listed >below. | >+==========================================================================+ > >Please include these source files with error report >Note that list may not be accurate in some cases, >so please double check that the problem can still >be reproduced with the set of files listed. >Consider also -gnatd.n switch (see debug.adb). > > >so it must be this check in verify_gimple_assign_unary: > > if (!is_gimple_val (rhs1)) > { > error ("invalid operand in unary operation"); > return true; > }
Yes. As said, you generally need to run folding results through force_gimple_operand. Richard. > >Bernd. >