diff options
author | Roger Sayle <roger@eyesopen.com> | 2003-10-11 21:06:19 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2003-10-11 21:06:19 +0000 |
commit | c877353c907f31f7af74452d4eb2c44b6900493d (patch) | |
tree | 7cecf6ae296fc7a727d050bc66fc9a49652ab40e /gcc/testsuite/gcc.c-torture | |
parent | e3be1116138b7a387420d370e9f6fddcc395f283 (diff) | |
download | gcc-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.c | 15 |
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; + } +} |