diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-01 14:23:42 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-01 14:23:42 +0000 |
commit | 82711f6567ef069eebb942e382e2c3fa61fbf538 (patch) | |
tree | 22200b7326b32ca672ffb6e4ce6d19a09dc476e5 /gcc48-pr80362.patch | |
parent | 5d624aa0d36abe76a344f0593eae5cf36d083b15 (diff) |
automatic import of compat-libgfortran-48openeuler24.03_LTSopeneuler23.09
Diffstat (limited to 'gcc48-pr80362.patch')
-rw-r--r-- | gcc48-pr80362.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc48-pr80362.patch b/gcc48-pr80362.patch new file mode 100644 index 0000000..1137857 --- /dev/null +++ b/gcc48-pr80362.patch @@ -0,0 +1,38 @@ +2017-09-18 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2017-04-10 Richard Biener <rguenther@suse.de> + + PR middle-end/80362 + * fold-const.c (fold_binary_loc): Look at unstripped ops when + looking for NEGATE_EXPR in -A / -B to A / B folding. + + * gcc.dg/torture/pr80362.c: New testcase. + +--- gcc/fold-const.c ++++ gcc/fold-const.c +@@ -11940,8 +11942,8 @@ fold_binary_loc (location_t loc, + /* Convert -A / -B to A / B when the type is signed and overflow is + undefined. */ + if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type)) +- && TREE_CODE (arg0) == NEGATE_EXPR +- && negate_expr_p (arg1)) ++ && TREE_CODE (op0) == NEGATE_EXPR ++ && negate_expr_p (op1)) + { + if (INTEGRAL_TYPE_P (type)) + fold_overflow_warning (("assuming signed overflow does not occur " +--- /dev/null ++++ gcc/testsuite/gcc.dg/torture/pr80362.c +@@ -0,0 +1,11 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-fstrict-overflow" } */ ++ ++int main() ++{ ++ signed char var_0, var_1 = -128; ++ var_0 = (signed char)(-var_1) / 3; ++ if (var_0 > 0) ++ __builtin_abort(); ++ return 0; ++} |