about summary refs log tree commit diff homepage
path: root/test
AgeCommit message (Collapse)Author
2015-05-31Make use of prefer-cex optional rather than defaultEric Rizzi
Previously, default Klee would go through every byte in a test case and attempt to bound it to be between 0 and 127, making it human readable. While this may be useful when attempting to understand Klee, it also means that the time required to create large test suites was greatly increased. By making this behavior default off, unsuspecting users won't incur these additional costs.
2015-04-19Fixed RewriteEqualities input to be more resilient to differences in ↵Cristian Cadar
compilation.
2015-04-19Temportily marking RewriteEqualities test as XFAIL.Cristian Cadar
2015-04-19Added a new test case that checks the --rewrite-equalities optimisation. ↵Cristian Cadar
The test contains the program proposed by Eric Rizzi in https://github.com/klee/klee/issues/227, and shows a case in which a constant constraint results after the optimisation.
2015-04-15Fix the handling of AShrExpr in ExprSMTLIBPrinter so that an overshiftDan Liew
always goes to zero (matches LLVM's APInt::ashr(...)). This is meant to partially address issue #218. There are a few problems with this commit * It is possible for AShrExpr to not be abbreviated because the scan methods will not see that we print the 0th child of the AShrExpr twice * The added test case should really be run through an SMT solver ( i.e. STP) but that requires infrastructure changes.
2015-04-01[test] Fix compilation warningMartin Nowack
Use correct definition and declaration of main function
2015-04-01[tests] Fix undefined functionMartin Nowack
Add some missing header to silence compiler warnings
2015-03-20Improve arithmetic-right-overshift-sym-conc.c test by make sure itDan Liew
also test a negative constant as the lhs.
2015-03-02New regression test checking that the Array factory correctly distinguishes ↵Cristian Cadar
between arrays created at the same location but with different sizes
2015-02-13Fixed and refactored overflow test cases.Cristian Cadar
2015-02-13refactor integer overflow detection, add signed intLuca Dariz
Instead of checking for every possible casse which result in overflow, it is much simpler to perform the operation using integers with bigger dimension and check if the result overflow
2015-02-13Fix overflow detection in unsigned multiplicationLuca Dariz
Previously the check was done as unsigned int a, b, c; c = a * b; if (c < a) // error but it is wrong, since it catches only a subset of all the possible overflows. This patch improves the check as unsigned int a, b, c; if ((a > 1) && (b > 1){ if ((UINT_MAX/a) < b) // error } An additional case has been added to the tests, with two 32-bit values that cause overflow and are not detected by the old check. It is also necessary to break the lowering procedure in case the current BasicBlock is splitted; in this case it was necessary in order not to trigger the division by 0 error.
2015-02-13add tests for unsigned integer overflowLuca Dariz
2015-02-13Revert "Merged @luckyluke's change for detecting overflow of unsigned add, sub"Cristian Cadar
Will redo the merge to preserve original commits. This reverts commit a743d7072d9ccf11f96e3df45f25ad07da6ad9d6.
2015-02-10Merged @luckyluke's change for detecting overflow of unsigned add, subCristian Cadar
and mul operations. Refactored tests into two main cases, and disabled them on LLVM 2.9, which does not support -fsanitized=*signed-integer-overflow.
2014-12-19Merge pull request #168 from willemp/fix-va-args-passing-for-big-typesCristian Cadar
Fix va args passing for big types
2014-12-12Print nested let-abbreviations in ExprSMTLIBPrinterRaimondas Sasnauskas
This patch introduces nested let-abbreviations in the ExprSMTLIBPrinter to reduce the size of the SMTLIBv2 queries and the corresponding processing time (bugfix for #170). The current implementation of the let abbreviation mode does not consider expression intra-dependencies and prints all abbreviations in the same let scope. For a (simplified) example, it prints (assert (let ( (?B1 (A + B)) (?B2 (A + B + C)) ) (= ?B1 ?B2) ) ). This is extremely inefficient if the expressions (and there many of these!) extensively reuse their subexpressions. Therefore, it's better to print the query with nested let-expressions by reusing existing expression bindings in the new let scope: (assert (let ( (?B1 (A + B)) ) (let ( (?B2 (?B1 + C)) ) (= ?B1 ?B2) ) ) ). This patch adds a new function ExprSMTLIBPrinter::scanBindingExprDeps() that scans bindings for expression dependencies. The result is a vector of new bindings (orderedBindings) that represents the expression dependency tree. When printing in the let-abbreviation mode, the new code starts with abbreviating expressions that have no dependencies and then gradually makes these new bindings available in the upcoming let-scopes where expressions with dependencies reuse them. The effect of nested let-abbreviations is comparable to :named abbreviations. However, the latter mode is not supported by the majority of the solvers.
2014-12-08Fix overshift checkPaul Marinescu
Shifting by bitwidth-1 is valid
2014-12-03Fixed test /Feature/PreferCex.c: Z3 instantiates different value for ↵Hristina Palikareva
unconstrained buf[3]
2014-12-02The printing of constraints and the QueryExpr have been merged into aDan Liew
single method with two different implementations. There is one version of this method for human readability (printHumanReadableQuery()) and a version for machine consumption (printMachineReadableQuery()). The reason for having two versions is because different behaviour is needed in different scenarios * In machine readable mode the entire query is printed inside a single ``(assert ...)``. This is done to allow ``(let ...)`` to abbreviate as much as possible. * In human readable mode each constraint and query expression is printed inside its own ``(assert ...)`` unless the abbreviation mode is ABBR_LET in which case all constraints and query expr are printed inside a single ``(assert ...)`` much like in the machine readable mode Whilst I was here I also fixed a bug handling identation when printing ``(let ...)`` expressions in printAssert()
2014-12-02Implement :named and let abbreviation modes in ExprSMTLIBPrinterRaimondas Sasnauskas
* Set the default abbreviation mode to let (ExprSMTLIBPrinter::ABBR_LET) * Remove the now defunct ExprSMTLIBLetPrinter * Improve performance of ExprSMTLIBPrinter::scan() by keeping track of visited Expr to avoid visiting them again * Rename ExprSMTLIBPrinter::printQuery() to ExprSMTLIBPrinter::printQueryExpr()
2014-10-16Fixed declaration of print_int that Travis complained aboutWillem
2014-10-16Fix the bug in printing 64bit numbers, set the test to expect passing. ↵Willem
Changed _testingUtils to use stdint.h
2014-10-15Fixed test/Concrete/ConstantExpr.llWillem
The difference between a 64bit pointer truncated to 32 bits and the original 64bit pointer would never be 0 if any of the high 32bits in the pointer were test. If lli and klee had a different value for the top 32bits of the address this test would be marked as failing. Due to the 64bit printing buf in _testingUtils this was not exposed before. The fix clears the top 32bits of the difference.
2014-10-15Added tests to _testingUtils.c (currently failing due to a bug in printing ↵Willem
64bit numbers) Fixing this bug will expose a failing test case for Concrete/ConstantExpr.ll
2014-10-09Fixed passing of long double (and other big types) in var_args on x86_64. ↵Willem
Removed XFAIL tag from the Feature/VarArgLongDouble.c test Fixed Executor to (more) correctly handle the alignment of types larger than 64bit (such as long double) when those are passed in var_args on x86_64. Specifically: From http://www.x86-64.org/documentation/abi.pdf AMD64-ABI 3.5.7p5: Step 7. Align l->overflow_arg_area upwards to a 16 byte boundary if alignment needed by type exceeds 8 byte boundary.
2014-10-09Add (currently failing) test to check for correct long double alignment in ↵Willem
varargs on x86_64.
2014-10-08Fixes support for passing arguments to klee in the ConcreteTests.Willem
This is for use with llvm-lit --param=klee_opts=... Fixes lit.cfg to not have an extranous space behind the klee command. Augments ConcreteTest to accept and pass arguments to klee. Augments all the ConcreteTest cases to wrap %klee in quotes. Without wrapping %klee the extra arguments will be seens as arguments to ConcreteTest.py resulting in an unknown argument error.
2014-09-15Generate fake files for test casesMartin Nowack
2014-09-15Merge pull request #157 from MartinNowack/fix_posix_printoutCristian Cadar
Fix a possible deadlock.
2014-09-15Remove --read-args command line option because this feature has beenDan Liew
available in LLVM's command line parser for a while (response files).
2014-09-14[Core] Fix a bug in how source file names were written in .istats files.Daniel Dunbar
- KCachegrind appears to expect the first function name to be preceeded by the name of the file it appears in. Otherwise, it will end up creating two different records for the function, one of which has no file name and won't have any statistics.
2014-09-14[Module] Try harder to associate each instruction with source level debug info.Daniel Dunbar
- This makes KCachegrind output look nicer, as otherwise it assumes instructions without debug info were inlined and shows some message to that effect. - This does however we might be lying a bit about the source line that an instruction came from. - This also adds a test case for our istats output, yay!
2014-09-14[tests] Enable running tests in parallel.Daniel Dunbar
- This works fine for me on OS X now, and has been reported to work on Linux as well. Enabling across the board although presumably Travis will still only run single-threaded. - Fixes #147.
2014-09-14[Core] Remove support for "--use-asm-addresses".Daniel Dunbar
- I suspect no one is using this feature, and I'm not sure it is well conceived either. Ripping it out for now in lieu of bothering to maintain it.
2014-09-14Use klee-libc for this test, as it runs when configured w/o uclibc.Daniel Dunbar
- If this is a problem for some reason, lets either fix the problem or move it into Runtime tests.
2014-09-14Enable test case againMartin Nowack
2014-09-14Use not test instead of non-existing FAIL.Martin Nowack
2014-09-14Fix testcase FD_Fail2.cMartin Nowack
Major issue was that puts was used for the succeed printf calls. With newer gcc/clang versions, printf is always used. The former took different code paths leading to much more possibilities to trigger failed writes and therefore generating more test cases. This patch avoids the generation of puts. And checks for the 4 possible generated test cases for 2 possible errors.
2014-09-14[Travis] Disable Write2 on Travis with LLVM-3.4 for now, to see if this ↵Daniel Dunbar
prevents the hang we are seeing.
2014-09-14Upgrade ConcreteTest.py to work with Python3 (Python 2.7.x should stillDan Liew
work)
2014-09-13[tests] Add support for testing LLVM version in REQUIRES: and XFAIL: lines.Daniel Dunbar
- You can now make tests disabled, or expected to fail, by writing something like: // XFAIL: llvm-3.4 or // REQUIRES: not-llvm-3.4 - This mechanism doesn't support version comparisons, it is mostly intended to help with switching over to new LLVM versions and incrementally working through the test failures.
2014-09-13[test/Concrete] Remove the Invoke*.ll tests.Daniel Dunbar
- LLVM changed the exception handling semantics a lot, and we can't write compatible tests across the versions. Unfortunately I am afraid this probably also means KLEE's exception handling semantics are broken for LLVM 3.4+, but our C++ support is spotty at best. These tests should probably be replaced with ones in a source language that supports exceptions if and when someone wants to make that work.
2014-09-13[test/Concrete] Update LLVM IR syntax.Daniel Dunbar
2014-09-13test/lit.site.cfg is never deleted, leading to misconfiguration errors.Cristian Cadar
Some additional cleaning in test/Makefile
2014-09-13These tests require --optimize=false to run successfully.Cristian Cadar
2014-09-12[Module] Fix handling of instructions without debug info.Daniel Dunbar
- The change in 6829fb9 caused us to not allocation InstructionInfo objects for instructions without source-level debug info, however, that means that all such instructions end up sharing the one dummy InstructionInfo object, which really breaks statistics tracking. - This commit basically reverts that change, and also changes the code so we don't ever use the dummy InstructionInfo object for instructions, so that this problem can't be hit in other ways (e.g., if someone modifies the module after the InstructionInfoTable construction). There is a FIXME for checking the same thing for functions. - Fixes #144.
2014-09-12[tests] Run 'make clean' prior to starting tests.Daniel Dunbar
- This ensures any stray klee-last files won't be picked up by my check to prevent people from adding tests that don't use --output-dir.
2014-09-12[tests] Add a workaround to try and prevent llvm-gcc from calling putchar(), ↵Daniel Dunbar
which the LLVM JIT can't handle.
2014-09-12[tests] Rewrite MemoryLimit test to use larger allocations for "little" test ↵Daniel Dunbar
path. - Otherwise this test takes a long time just hammering on the allocator trying to get to the memory limit.