aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-07-11 21:37:33 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-07-11 21:37:33 +0000
commita8b9ee6feb54764859c6f113983255a6dec897d6 (patch)
tree700087ff4d5e5444c05f3bb76d121ab61243e3ce /gcc/cfgexpand.c
parentbee60edc26944d6993b3bfdca3a811d7a8c04e0f (diff)
downloadgcc-a8b9ee6feb54764859c6f113983255a6dec897d6.zip
gcc-a8b9ee6feb54764859c6f113983255a6dec897d6.tar.gz
gcc-a8b9ee6feb54764859c6f113983255a6dec897d6.tar.bz2
compiler: ensure evaluation order in type hash/eq functions
The type hash and equality functions are generated after the order_evaluations pass. They may contain shortcut operators and Set_and_use_temporary_expressions (e.g. from lowering a Binary_exprssion) that need to be ordered. Run order_evaluations and remove_shortcuts on these functions. (The hash functions may be fine, but to be on the safe side we run on them anyway. We do need to run on the equality functions.) A Set_and_use_temporary_expression is effectively an assignment, so it needs to be ordered. Otherwise if we insert a temporary statement before it, we may get wrong evaluation order. A test case is CL 185818. Fixes golang/go#33062. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185817 From-SVN: r273425
Diffstat (limited to 'gcc/cfgexpand.c')
0 files changed, 0 insertions, 0 deletions