[prev in list] [next in list] [prev in thread] [next in thread] 

List:       klee-commits
Subject:    [klee-commits] [klee/klee] d3a467: llvm: make KLEE compile against LLVM 3.5 and 3.6
From:       Dan Liew <daniel.liew () imperial ! ac ! uk>
Date:       2017-05-24 13:24:49
Message-ID: 592589a159cad_31c23fd8dd69dc2885929 () hookshot-fe6-cp1-prd ! iad ! github ! net ! mail
[Download RAW message or body]

Branch: refs/heads/master
  Home:   https://github.com/klee/klee
  Commit: d3a467d8999e6e52892b13c2bc93ac829ee1b7c9
      https://github.com/klee/klee/commit/d3a467d8999e6e52892b13c2bc93ac8=
29ee1b7c9
  Author: Richard Trembeck=C3=BD <richardt@centrum.sk>
  Date:   2017-05-24 (Wed, 24 May 2017)

  Changed paths:
    M lib/Core/Executor.cpp
    M lib/Core/ExternalDispatcher.cpp
    M lib/Core/ExternalDispatcher.h
    M lib/Core/StatsTracker.cpp
    M lib/Module/KModule.cpp
    M lib/Module/ModuleUtil.cpp
    M lib/Module/Optimize.cpp
    M lib/Module/RaiseAsm.cpp
    M lib/Solver/QueryLoggingSolver.cpp
    M lib/Support/CompressionStream.cpp
    M tools/klee/Makefile
    M tools/klee/main.cpp

  Log Message:
  -----------
  llvm: make KLEE compile against LLVM 3.5 and 3.6

Based on work by @ccadeptic23 and @delcypher.
Formatting fixed by @snf.
Fix compiler warning by @martijnthe.
Further fixes by @mchalupa.

Refactored, so that changes can be reviewed -- no massive changes in
whitespace and in the surrounding code.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>


  Commit: a3e82239a74cdc43c44bd5200434cb48c7dd1edb
      https://github.com/klee/klee/commit/a3e82239a74cdc43c44bd5200434cb4=
8c7dd1edb
  Author: Jiri Slaby <jirislaby@gmail.com>
  Date:   2017-05-24 (Wed, 24 May 2017)

  Changed paths:
    M .travis.yml
    M test/lit.cfg

  Log Message:
  -----------
  travis CI: add LLVM 3.5 and 3.6 tests

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>


  Commit: 5dd3eee423c866aac6659dc2db44310737cf201d
      https://github.com/klee/klee/commit/5dd3eee423c866aac6659dc2db44310=
737cf201d
  Author: Dan Liew <daniel.liew@imperial.ac.uk>
  Date:   2017-05-24 (Wed, 24 May 2017)

  Changed paths:
    M lib/Core/Executor.cpp
    M lib/Core/ExternalDispatcher.cpp
    M lib/Core/ExternalDispatcher.h

  Log Message:
  -----------
  Rearchitect ExternalDispatcher

Previous changes for LLVM 3.6 using the MCJIT were incredibly hacky.
Those changes required creating and destroying the ExternalDispatcher
for every call to an external function. This is really bad

* It's very poor design. The Executor should not need to know
  about the internal implementation details of the ExternalDispatcher.
* It's likely very inefficient to keep creating and destroying the
  external dispatcher.

The new code does several things.

* Moves all of the implementation details into a `ExternalDispatcherImpl`=

  class so that implementation details are not exposed in
  `ExternalDispatcher.h`.
* When using the MCJIT a module is compiled for every (instruction, funct=
ion)
  tuple. This is necessary because the MCJIT compiles whole modules at a
  time and once a module is compiled it cannot be modified and
  re-compiled. Doing this means we get to reuse already generated code
  for call sites which hopefully will reduce the overhead of repeatedly
  executing the same call site.

A consequence of this change is that now the dispatcher function name
needs to be unique across all modules. To do this we just append the
module name because we guarantee that the module name is unique by
construction.

The code has also been clang-formatted.


Compare: https://github.com/klee/klee/compare/92367dec2ee0...5dd3eee423c8=


_______________________________________________
klee-commits mailing list
klee-commits@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/klee-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic