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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr86271.c | 17 |
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d420310..342c69b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-06-26 Richard Biener <rguenther@suse.de> + + PR middle-end/86271 + * fold-const.c (fold_convertible_p): Pointer extension + isn't valid. + 2018-06-26 Alexandre Oliva <aoliva@redhat.com> PR debug/86064 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: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5d5ed66..eb782ff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-26 Richard Biener <rguenther@suse.de> + + PR middle-end/86271 + * gcc.dg/pr86271.c: New testcase. + 2018-06-26 Alexandre Oliva <aoliva@redhat.com> PR debug/86064 diff --git a/gcc/testsuite/gcc.dg/pr86271.c b/gcc/testsuite/gcc.dg/pr86271.c new file mode 100644 index 0000000..1200533 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr86271.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int main () +{ + int i; + foobar (i, &i); /* { dg-warning "implicit declaration" } */ +} + +int foobar (int a, long long b) +{ + int c; + + c = a % b; + a = a / b; + return a + b; +} |