xref: /freebsd/contrib/llvm-project/clang/lib/Driver/ToolChains/TCE.h (revision 349cc55c9796c4596a5b9904cd3281af295f878f)
10b57cec5SDimitry Andric //===--- TCE.h - TCE Tool and ToolChain Implementations ---------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_TCE_H
100b57cec5SDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_TCE_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "clang/Driver/Driver.h"
130b57cec5SDimitry Andric #include "clang/Driver/ToolChain.h"
140b57cec5SDimitry Andric #include <set>
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric namespace clang {
170b57cec5SDimitry Andric namespace driver {
180b57cec5SDimitry Andric namespace toolchains {
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric /// TCEToolChain - A tool chain using the llvm bitcode tools to perform
210b57cec5SDimitry Andric /// all subcommands. See http://tce.cs.tut.fi for our peculiar target.
220b57cec5SDimitry Andric class LLVM_LIBRARY_VISIBILITY TCEToolChain : public ToolChain {
230b57cec5SDimitry Andric public:
240b57cec5SDimitry Andric   TCEToolChain(const Driver &D, const llvm::Triple &Triple,
250b57cec5SDimitry Andric                const llvm::opt::ArgList &Args);
260b57cec5SDimitry Andric   ~TCEToolChain() override;
270b57cec5SDimitry Andric 
280b57cec5SDimitry Andric   bool IsMathErrnoDefault() const override;
290b57cec5SDimitry Andric   bool isPICDefault() const override;
30*349cc55cSDimitry Andric   bool isPIEDefault(const llvm::opt::ArgList &Args) const override;
310b57cec5SDimitry Andric   bool isPICDefaultForced() const override;
320b57cec5SDimitry Andric };
330b57cec5SDimitry Andric 
340b57cec5SDimitry Andric /// Toolchain for little endian TCE cores.
350b57cec5SDimitry Andric class LLVM_LIBRARY_VISIBILITY TCELEToolChain : public TCEToolChain {
360b57cec5SDimitry Andric public:
370b57cec5SDimitry Andric   TCELEToolChain(const Driver &D, const llvm::Triple &Triple,
380b57cec5SDimitry Andric                  const llvm::opt::ArgList &Args);
390b57cec5SDimitry Andric   ~TCELEToolChain() override;
400b57cec5SDimitry Andric };
410b57cec5SDimitry Andric 
420b57cec5SDimitry Andric } // end namespace toolchains
430b57cec5SDimitry Andric } // end namespace driver
440b57cec5SDimitry Andric } // end namespace clang
450b57cec5SDimitry Andric 
460b57cec5SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_TCE_H
47