aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-10-11 21:06:19 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-10-11 21:06:19 +0000
commitc877353c907f31f7af74452d4eb2c44b6900493d (patch)
tree7cecf6ae296fc7a727d050bc66fc9a49652ab40e /gcc/testsuite/gcc.c-torture
parente3be1116138b7a387420d370e9f6fddcc395f283 (diff)
downloadgcc-c877353c907f31f7af74452d4eb2c44b6900493d.zip
gcc-c877353c907f31f7af74452d4eb2c44b6900493d.tar.gz
gcc-c877353c907f31f7af74452d4eb2c44b6900493d.tar.bz2
re PR rtl-optimization/12260 (ICE in output_operand: invalid expression as operand)
PR optimization/12260 * simplify-rtx.c (simplify_unary_operation): Simplify all unary operations through CONST nodes. Optimize (neg (plus X C)) as (minus -C X) for constant values C. (simplify_binary_operation): Optimize (minus (neg X) C) as (minus -C X) for constant values C. (simplify_plus_minus): Avoid creating (neg (const (plus X C)), instead create (minus -C X). * gcc.c-torture/compile/20031011-2.c: New test case. From-SVN: r72379
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20031011-2.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031011-2.c b/gcc/testsuite/gcc.c-torture/compile/20031011-2.c
new file mode 100644
index 0000000..0268455
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20031011-2.c
@@ -0,0 +1,15 @@
+/* PR optimization/12260. */
+
+extern int f(void);
+extern int g(int);
+
+static char buf[512];
+void h(int l) {
+ while (l) {
+ char *op = buf;
+ if (f() == 0)
+ break;
+ if (g(op - buf + 1))
+ break;
+ }
+}