diff options
author | Justin Bogner <mail@justinbogner.com> | 2017-10-12 01:57:49 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2017-10-12 01:57:49 +0000 |
commit | 58e4a843472a0cddde204a47d087ada7f56ccf29 (patch) | |
tree | 9df7e4cd50aca3eed0dcd2cad0243072d0b61385 /test/tools | |
parent | 89b77ce2ca335f4cd6fd5ad6d343c3c4a9d348b3 (diff) | |
download | llvm-58e4a843472a0cddde204a47d087ada7f56ccf29.tar.gz |
llvm-isel-fuzzer: Handle a subset of backend flags in the executable name
Here we add a secondary option parser to llvm-isel-fuzzer (and provide
it for use with other fuzzers). With this, you can copy the fuzzer to
a name like llvm-isel-fuzzer:aarch64-gisel for a fuzzer that fuzzer
AArch64 with GlobalISel enabled, or fuzzer:x86_64 to fuzz x86, with no
flags required. This should be useful for running these in OSS-Fuzz.
Note that this handrolls a subset of cl::opts to recognize, rather
than embedding a complete command parser for argv[0]. If we find we
really need the flexibility of handling arbitrary options at some
point we can rethink this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315545 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tools')
-rw-r--r-- | test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll | 15 | ||||
-rw-r--r-- | test/tools/llvm-isel-fuzzer/execname-options.ll | 15 |
2 files changed, 30 insertions, 0 deletions
diff --git a/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll b/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll new file mode 100644 index 00000000000..e3974b54ca5 --- /dev/null +++ b/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll @@ -0,0 +1,15 @@ +; REQUIRES: aarch64-registered-target + +; RUN: echo > %t.input + +; RUN: cp llvm-isel-fuzzer %t.bin:aarch64 +; RUN: %t.bin:aarch64 %t.input 2>&1 | FileCheck -check-prefix=AARCH64 %s +; AARCH64: Injected args: -mtriple=aarch64 + +; RUN: mv %t.bin:aarch64 %t.bin:aarch64-O1 +; RUN: %t.bin:aarch64-O1 %t.input 2>&1 | FileCheck -check-prefix=OPT-AFTER %s +; OPT-AFTER: Injected args: -mtriple=aarch64 -O1 + +; RUN: mv %t.bin:aarch64-O1 %t.bin:O3-aarch64 +; RUN: %t.bin:O3-aarch64 %t.input 2>&1 | FileCheck -check-prefix=OPT-BEFORE %s +; OPT-BEFORE: Injected args: -O3 -mtriple=aarch64 diff --git a/test/tools/llvm-isel-fuzzer/execname-options.ll b/test/tools/llvm-isel-fuzzer/execname-options.ll new file mode 100644 index 00000000000..8ebc1e96ddc --- /dev/null +++ b/test/tools/llvm-isel-fuzzer/execname-options.ll @@ -0,0 +1,15 @@ +; RUN: echo > %t.input + +; RUN: cp llvm-isel-fuzzer %t.bin:gisel +; RUN: not %t.bin:gisel %t.input 2>&1 | FileCheck -check-prefix=GISEL %s +; GISEL: Injected args: -global-isel -O0 +; GISEL: -mtriple must be specified + +; RUN: cp llvm-isel-fuzzer %t.bin:gisel-O2 +; RUN: not %t.bin:gisel-O2 %t.input 2>&1 | FileCheck -check-prefix=GISEL-O2 %s +; GISEL-O2: Injected args: -global-isel -O0 -O2 +; GISEL-O2: -mtriple must be specified + +; RUN: cp llvm-isel-fuzzer %t.bin:unexist +; RUN: not %t.bin:unexist %t.input 2>&1 | FileCheck -check-prefix=NO-OPT %s +; NO-OPT: Unknown option: |