[Bug middle-end/83415] New: ICE during gimplification of assignment to read-only vector
kelvin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 13 20:00:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83415
Bug ID: 83415
Summary: ICE during gimplification of assignment to read-only
vector
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: kelvin at gcc dot gnu.org
Target Milestone: ---
Created attachment 42876
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42876&action=edit
Program to reproduce the problem
The following command line:
gcc -S -O3 -o gimplification-error.s gimplification-error.c
results in an ICE, as shown in the capture of stderr below:
At top of rs6000_override_internal, global_init: 1
TARGET_DEFAULT = 0x1f07e05c09613f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mno-power8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mno-vsx-timode, -m64, \
-m32, -mno-eabi, -mlittle,
-mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
x_rs6000_isa_flags = <none>
rs6000_isa_flags_explicit = <none>
rs6000_isa_flags = 0x1f07e05c09613f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mno-power8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mno-vsx-timode, -m64, \
-m32, -mno-eabi, -mlittle,
-mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
set_masks is POWERPC_MASKS
set_masks = 0x3fa7ffdedffb7a: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mdlmzb, \
-mefficient-unaligned-vsx,
-mfloat128, -mfloat128-type, \
-mfloat128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -misel, -mmfcrf, \
-mmfpgpr, -mmodulo,
-mmulhw, -mno-multiple, -mpopcntb, -mpopcntd, \
-mpower8-fusion,
-mno-power8-fusion-sign, -mpower8-vector, \
-mpower9-dform-scalar,
-mpower9-dform-vector, -mpower9-fusion, \
-mpower9-minmax,
-mpower9-misc, -mpower9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mtoc-fusion, -mno-update,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mvsx-timode, -mno-64, \
-m32, -mno-eabi,
-mno-little, -mbig, -mno-relocatable, \
-mstrict-align,
-msoft-float, -mno-string
Before adjusting set_masks
set_masks = 0x3fa7ffdedffb7a: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mdlmzb, \
-mefficient-unaligned-vsx,
-mfloat128, -mfloat128-type, \
-mfloat128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -misel, -mmfcrf, \
-mmfpgpr, -mmodulo,
-mmulhw, -mno-multiple, -mpopcntb, -mpopcntd, \
-mpower8-fusion,
-mno-power8-fusion-sign, -mpower8-vector, \
-mpower9-dform-scalar,
-mpower9-dform-vector, -mpower9-fusion, \
-mpower9-minmax,
-mpower9-misc, -mpower9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mtoc-fusion, -mno-update,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mvsx-timode, -mno-64, \
-m32, -mno-eabi,
-mno-little, -mbig, -mno-relocatable, \
-mstrict-align,
-msoft-float, -mno-string
rs6000_isa_flags_explicit = <none>
After taking care of set_masks:
set_masks = 0x3fa7ffdedffb7a: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mdlmzb, \
-mefficient-unaligned-vsx,
-mfloat128, -mfloat128-type, \
-mfloat128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -misel, -mmfcrf, \
-mmfpgpr, -mmodulo,
-mmulhw, -mno-multiple, -mpopcntb, -mpopcntd, \
-mpower8-fusion,
-mno-power8-fusion-sign, -mpower8-vector, \
-mpower9-dform-scalar,
-mpower9-dform-vector, -mpower9-fusion, \
-mpower9-minmax,
-mpower9-misc, -mpower9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mtoc-fusion, -mno-update,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mvsx-timode, -mno-64, \
-m32, -mno-eabi,
-mno-little, -mbig, -mno-relocatable, \
-mstrict-align,
-msoft-float, -mno-string
Before checking have_cpu
rs6000_isa_flags = 0x1f07e05c09613f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mno-power8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mno-vsx-timode, -m64, \
-m32, -mno-eabi, -mlittle,
-mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
Since we have_cpu, we mask off set_masks bits
rs6000_isa_flags = 0x000000000005: -mno-altivec, -mno-cmpb,
-mno-crypto, -mno-direct-move, -mno-dlmzb, \
-mno-efficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mno-fprnd, -mno-hard-dfp, -mno-htm, \
-mno-isel, -mno-mfcrf,
-mno-mfpgpr, -mno-modulo, -mno-mulhw, \
-mno-multiple, -mno-popcntb,
-mno-popcntd, -mno-power8-fusion, \
-mno-power8-fusion-sign,
-mno-power8-vector, \
-mno-power9-dform-scalar,
-mno-power9-dform-vector, \
-mno-power9-fusion,
-mno-power9-minmax, -mno-power9-misc, \
-mno-power9-vector,
-mno-powerpc-gfxopt, -mno-powerpc-gpopt, \
-mno-quad-memory,
-mno-quad-memory-atomic, -mno-recip-precision, \
-mno-save-toc-indirect,
-mno-string, -mno-toc-fusion, -mupdate, \
-mno-upper-regs-di,
-mno-upper-regs-df, -mno-upper-regs-sf, -mno-vsx, \
-mno-vsx-small-integer,
-mno-vsx-timode, -m64, -m32, -mno-eabi, \
-mlittle, -mbig,
-mno-relocatable, -mno-strict-align, \
-mno-soft-float, -mno-string
After setting flags to [cpu_index].target_enable
rs6000_isa_flags = 0x1f07e05c09613f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mno-power8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mno-vsx-timode, -m64, \
-m32, -mno-eabi, -mlittle,
-mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
Before defaults, rs6000_isa_flags= 0x1f07e05c09613f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mno-float128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mno-power8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mquad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mno-vsx-timode, \
-m64, -m32, -mno-eabi,
-mlittle, -mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
At bottom of rs6000_override_internal
x_rs6000_isa_flags = <none>
rs6000_isa_flags_explicit = <none>
rs6000_isa_flags = 0x3f06e07c0d713f: -maltivec, -mcmpb,
-mcrypto, -mdirect-move, -mno-dlmzb, \
-mefficient-unaligned-vsx,
-mno-float128, -mfloat128-type, \
-mno-float128-hardware,
-mfprnd, -mhard-dfp, -mhtm, -mno-isel, \
-mmfcrf, -mno-mfpgpr,
-mno-modulo, -mno-mulhw, -mno-multiple, \
-mpopcntb, -mpopcntd,
-mpower8-fusion, -mpower8-fusion-sign, \
-mpower8-vector,
-mno-power9-dform-scalar, \
-mno-power9-dform-vector,
-mno-power9-fusion, -mno-power9-minmax, \
-mno-power9-misc,
-mno-power9-vector, -mpowerpc-gfxopt, \
-mpowerpc-gpopt,
-mno-quad-memory, -mquad-memory-atomic, \
-mrecip-precision,
-mno-save-toc-indirect, -mno-string, \
-mno-toc-fusion, -mupdate,
-mupper-regs-di, -mupper-regs-df, \
-mupper-regs-sf, -mvsx,
-mvsx-small-integer, -mvsx-timode, -m64, \
-m32, -mno-eabi, -mlittle,
-mbig, -mno-relocatable, \
-mno-strict-align,
-mno-soft-float, -mno-string
builtin mask = 0x800204d01d013: altivec, vsx, no-spe,
no-paired, fre, fres, no-frsqrte, no-frsqrtes, \
popcntd, no-cell,
power8-vector, no-power9-vector, no-power9-misc, \
crypto, htm, hard-dfp,
hard-float, long-double-128, float128
gimplification-error.c: In function ‘main’:
gimplification-error.c:8:3: warning: assignment of read-only location ‘((short
int[8])y)[i]’
y[i] = 7 - i;
^
gimplification failed:
{ 0, 1, 2, 3, 4, 5, 6, 7 } <vector_cst 0x3fff942cc940
type <vector_type 0x3fff942b5940 __vector signed short
type <integer_type 0x3fff941105e8 short int public HI
size <integer_cst 0x3fff940d14b8 constant 16>
unit size <integer_cst 0x3fff940d14d0 constant 2>
align 16 symtab 0 alias set -1 canonical type 0x3fff941105e8
precision 16 min <integer_cst 0x3fff940d1470 -32768> max <integer_cst
0x3fff940d1488 32767>
pointer_to_this <pointer_type 0x3fff942b59e8>>
readonly V8HI
size <integer_cst 0x3fff940d1350 constant 128>
unit size <integer_cst 0x3fff940d1368 constant 16>
align 128 symtab 0 alias set -1 canonical type 0x3fff942b5940 nunits 8>
constant
elt0: <integer_cst 0x3fff940dc570 type <integer_type 0x3fff941105e8 short
int> constant 0>
elt1: <integer_cst 0x3fff940dc588 type <integer_type 0x3fff941105e8 short
int> constant 1>
elt2: <integer_cst 0x3fff940dc5a0 type <integer_type 0x3fff941105e8 short
int> constant 2>
elt3: <integer_cst 0x3fff940dc5d0 type <integer_type 0x3fff941105e8 short
int> constant 3>
elt4: <integer_cst 0x3fff940dc5e8 type <integer_type 0x3fff941105e8 short
int> constant 4>
elt5: <integer_cst 0x3fff940dc618 type <integer_type 0x3fff941105e8 short
int> constant 5>
elt6: <integer_cst 0x3fff940dc648 type <integer_type 0x3fff941105e8 short
int> constant 6>
elt7: <integer_cst 0x3fff940dc678 type <integer_type 0x3fff941105e8 short
int> constant 7>>
gimplification-error.c:8:4: internal compiler error: gimplification failed
y[i] = 7 - i;
~^~~
0x108e6dbb gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:12155
0x108b2ebf gimplify_compound_lval
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:2845
0x108e2d07 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:11144
0x108c05db gimplify_modify_expr
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:5473
0x108e2eaf gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:11192
0x108c590b gimplify_stmt(tree_node**, gimple**)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:6478
0x108ae2d3 gimplify_statement_list
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:1716
0x108e50bb gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:11619
0x108c590b gimplify_stmt(tree_node**, gimple**)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:6478
0x108ac2ef gimplify_bind_expr
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:1290
0x108e3e1f gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:11391
0x108c590b gimplify_stmt(tree_node**, gimple**)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:6478
0x108ae2d3 gimplify_statement_list
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:1716
0x108e50bb gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:11619
0x108c590b gimplify_stmt(tree_node**, gimple**)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:6478
0x108e7f4b gimplify_body(tree_node*, bool)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:12388
0x108e8b7b gimplify_function_tree(tree_node*)
/home/kelvin/gcc-root/gcc-trunk/gcc/gimplify.c:12546
0x105dd1ef cgraph_node::analyze()
/home/kelvin/gcc-root/gcc-trunk/gcc/cgraphunit.c:657
0x105df31f analyze_functions
/home/kelvin/gcc-root/gcc-trunk/gcc/cgraphunit.c:1118
0x105e4e6f symbol_table::finalize_compilation_unit()
/home/kelvin/gcc-root/gcc-trunk/gcc/cgraphunit.c:2599
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
make: *** [gimplification-error.s] Error 1
More information about the Gcc-bugs
mailing list