diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2017-07-21 19:09:10 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2017-07-21 19:09:10 -0400 |
commit | 462589f69859354a9c623cad9015821e769beecb (patch) | |
tree | 805ab7e0989617098c9311e0386963b37142084c /tests.sh | |
parent | 4a245d3885f99169649cc45e2d1abe606c249d22 (diff) | |
download | bfs-462589f69859354a9c623cad9015821e769beecb.tar.xz |
Fix a couple terrible optimizer bugs
Just because an expression is always true or false, doesn't mean we can
execute it more often than it otherwise would be, unless it's also pure.
But that's equivalent to being identically -true/-false, so just check
that.
Diffstat (limited to 'tests.sh')
-rwxr-xr-x | tests.sh | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -346,6 +346,8 @@ gnu_tests=( test_or test_comma test_precedence + test_and_purity + test_or_purity ) bfs_tests=( @@ -1232,6 +1234,16 @@ function test_printx() { bfs_diff weirdnames -printx } +function test_and_purity() { + # Regression test: (-a lhs(pure) rhs(always_false)) <==> rhs is only valid if rhs is pure + bfs_diff basic -name nonexistent \( -print , -false \) +} + +function test_or_purity() { + # Regression test: (-o lhs(pure) rhs(always_true)) <==> rhs is only valid if rhs is pure + bfs_diff basic -name '*' -o -print +} + passed=0 failed=0 |