gcc/add-check-for-pressure-in-sche1.patch
xiezhiheng ae8eb7c877 [Upload patch] Upload patches to add new features
and fix bugs

- add-fp-model-options.patch: New file
- enable-simd-math.patch: Enable simd math library in C and Fortran
- fix-CTOR-vectorization.patch: New file
- fix-range-set-by-vectorization-on-niter-IVs.patch: New file
- medium-code-mode.patch: Fix bugs when used with fpic
- optabs-Dont-use-scalar-conversions-for-vectors.patch: New file
- PR92429-do-not-fold-when-updating.patch: New file
- redundant-loop-elimination.patch: Fix some programming specifications
- fix-ICE-in-vect.patch: New file
- Fix-type-mismatch-in-SLPed-constructors.patch: New file
- add-check-for-pressure-in-sche1.patch: New file
- revert-moutline-atomics.patch: New file
- fix-ICE-in-eliminate-stmt.patch: New file
- revise-type-before-build-MULT.patch: New file
- Simplify-X-C1-C2.patch: New file
- gcc.spec: Add new patches
2021-04-29 10:30:11 +08:00

53 lines
1.5 KiB
Diff

--- a/gcc/haifa-sched.c 2021-03-08 14:46:59.204000000 +0800
+++ b/gcc/haifa-sched.c 2021-03-09 13:32:40.656000000 +0800
@@ -2036,8 +2036,10 @@ model_start_update_pressure (struct mode
/* The instruction wasn't part of the model schedule; it was moved
from a different block. Update the pressure for the end of
the model schedule. */
- MODEL_REF_PRESSURE (group, point, pci) += delta;
- MODEL_MAX_PRESSURE (group, point, pci) += delta;
+ if (MODEL_REF_PRESSURE (group, point, pci) != -1 || delta > 0)
+ MODEL_REF_PRESSURE (group, point, pci) += delta;
+ if (MODEL_MAX_PRESSURE (group, point, pci) != -1 || delta > 0)
+ MODEL_MAX_PRESSURE (group, point, pci) += delta;
}
else
{
diff -uprN a/gcc/testsuite/gcc.dg/sche1-pressure-check.c b/gcc/testsuite/gcc.dg/sche1-pressure-check.c
--- a/gcc/testsuite/gcc.dg/sche1-pressure-check.c 1970-01-01 08:00:00.000000000 +0800
+++ b/gcc/testsuite/gcc.dg/sche1-pressure-check.c 2021-03-09 13:40:34.036000000 +0800
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+int a, g, h;
+char b, c;
+short d;
+static int e;
+int *volatile f;
+void i() {
+ int j = 0;
+ int *k = &a;
+ for (; c; c--) {
+ g && (d = 0);
+ j ^= 10;
+ {
+ int l[2];
+ l;
+ h = l[1];
+ }
+ e = 1;
+ for (; e <= 7; e++) {
+ *k = 6;
+ *f = b = 0;
+ for (; b <= 7; b++) {
+ int m = 5;
+ if (g)
+ *k &= m ^= j;
+ }
+ }
+ }
+}
+int main() {}
+