https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96993
--- Comment #3 from Jan Smets <jan.smets at nokia dot com> --- The testcase has a sign-compare warning that we've traditionally been ignoring given the ancient codebase. warning: operand of ‘?:’ changes signedness from ‘int’ to ‘long unsigned int’ due to unsignedness of other operand [-Wsign-compare] Changing the testcase From: ((address_ != (0L)) ? (tUint8 *)(address_) - (tUint8 *)(&((struct tmm_blk_free_head_t *)0)->ql.column_list) : (uintptr_t)(0L)); To: ((address_ != (0L)) ? (uintptr_t)(tUint8 *)(address_) - (uintptr_t)(tUint8 *)(&((struct tmm_blk_free_head_t *)0)->ql.column_list) : (uintptr_t)(0L)); will generate different code in GCC 10, whereas it generates the same code in GCC 9 for both forms. (with the added casts the generated GCC 10 code is good), commit 810c42c38d37317c80b57db0a8b6d8991e78ef50 Author: Richard Biener <rguent...@suse.de> Date: Mon May 20 12:02:35 2019 +0000 tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR doesn't produce pointers. 2019-05-20 Richard Biener <rguent...@suse.de> * tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR doesn't produce pointers. {TRUNC,CEIL,FLOOR,ROUND,EXACT}_{DIV,MOD}_EXPR points to what the first operand points to. From-SVN: r271414 I've been trying to get a working/crashing testcase for you, but finding the right 'input data' to trigger the behavior for my testcase seems a bit problematic.