mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 16:56:39 +00:00
8ec0aee3b4
Remove `MDNodeFwdDecl` (as promised in r226481). Aside from API changes, there's no real functionality change here. `MDNode::getTemporary()` now forwards to `MDTuple::getTemporary()`, which returns a tuple with `isTemporary()` equal to true. The main point is that we can now add temporaries of other `MDNode` subclasses, needed for PR22235 (I introduced `MDNodeFwdDecl` in the first place because I didn't recognize this need, and thought they were only needed to handle forward references). A few things left out of (or highlighted by) this commit: - I've had to remove the (few) uses of `std::unique_ptr<>` to deal with temporaries, since the destructor is no longer public. `getTemporary()` should probably return the equivalent of `std::unique_ptr<T, MDNode::deleteTemporary>`. - `MDLocation::getTemporary()` doesn't exist yet (worse, it actually does exist, but does the wrong thing: `MDNode::getTemporary()` is inherited and returns an `MDTuple`). - `MDNode` now only has one subclass, `UniquableMDNode`, and the distinction between them is actually somewhat confusing. I'll fix those up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226501 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
llvm | ||
build.sh | ||
conftest.go | ||
README.txt |
This directory contains LLVM bindings for the Go programming language (http://golang.org). Prerequisites ------------- * Go 1.2+. * CMake (to build LLVM). Using the bindings ------------------ The package path "llvm.org/llvm/bindings/go/llvm" can be used to import the latest development version of LLVM from SVN. Paths such as "llvm.org/llvm.v36/bindings/go/llvm" refer to released versions of LLVM. It is recommended to use the "-d" flag with "go get" to download the package or a dependency, as an additional step is required to build LLVM (see "Building LLVM" below). Building LLVM ------------- The script "build.sh" in this directory can be used to build LLVM and prepare it to be used by the bindings. If you receive an error message from "go build" like this: ./analysis.go:4:84: fatal error: llvm-c/Analysis.h: No such file or directory #include <llvm-c/Analysis.h> // If you are getting an error here read bindings/go/README.txt or like this: ./llvm_dep.go:5: undefined: run_build_sh it means that LLVM needs to be built or updated by running the script. $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh Any command line arguments supplied to the script are passed to LLVM's CMake build system. A good set of arguments to use during development are: $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD=host -DBUILD_SHARED_LIBS=ON Note that CMake keeps a cache of build settings so once you have built LLVM there is no need to pass these arguments again after updating. Alternatively, you can build LLVM yourself, but you must then set the CGO_CPPFLAGS, CGO_CXXFLAGS and CGO_LDFLAGS environment variables: $ export CGO_CPPFLAGS="`/path/to/llvm-build/bin/llvm-config --cppflags`" $ export CGO_CXXFLAGS=-std=c++11 $ export CGO_LDFLAGS="`/path/to/llvm-build/bin/llvm-config --ldflags --libs --system-libs all`" $ go build -tags byollvm