diff options
author | Richard Biener <rguenther@suse.de> | 2018-06-26 06:40:43 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-06-26 06:40:43 +0000 |
commit | 7d0c13523ca0896a160881c9701b020172fb67fd (patch) | |
tree | 4d68bb1cffb8abe642de28554414868e5a08b497 /gcc/fold-const.c | |
parent | 27b1bf1ec4f6190dae78187a142353e52701570d (diff) | |
download | gcc-7d0c13523ca0896a160881c9701b020172fb67fd.zip gcc-7d0c13523ca0896a160881c9701b020172fb67fd.tar.gz gcc-7d0c13523ca0896a160881c9701b020172fb67fd.tar.bz2 |
re PR ipa/86271 (ICE due to size mismatch when inlining)
2018-06-26 Richard Biener <rguenther@suse.de>
PR middle-end/86271
* fold-const.c (fold_convertible_p): Pointer extension
isn't valid.
* gcc.dg/pr86271.c: New testcase.
From-SVN: r262131
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 4568e1e..8476c22 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2358,7 +2358,9 @@ fold_convertible_p (const_tree type, const_tree arg) case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: case POINTER_TYPE: case REFERENCE_TYPE: case OFFSET_TYPE: - return (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig) + return (INTEGRAL_TYPE_P (orig) + || (POINTER_TYPE_P (orig) + && TYPE_PRECISION (type) <= TYPE_PRECISION (orig)) || TREE_CODE (orig) == OFFSET_TYPE); case REAL_TYPE: |