Coverage Report

Created: 2024-01-17 10:31

/src/llvm-project/clang/lib/AST/Interp/Integral.h
Line
Count
Source (jump to first uncovered line)
1
//===--- Integral.h - Wrapper for numeric types for the VM ------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Defines the VM types and helpers operating on types.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_AST_INTERP_INTEGRAL_H
14
#define LLVM_CLANG_AST_INTERP_INTEGRAL_H
15
16
#include "clang/AST/ComparisonCategories.h"
17
#include "clang/AST/APValue.h"
18
#include "llvm/ADT/APSInt.h"
19
#include "llvm/Support/MathExtras.h"
20
#include "llvm/Support/raw_ostream.h"
21
#include <cstddef>
22
#include <cstdint>
23
24
#include "Primitives.h"
25
26
namespace clang {
27
namespace interp {
28
29
using APInt = llvm::APInt;
30
using APSInt = llvm::APSInt;
31
32
template <bool Signed> class IntegralAP;
33
34
// Helper structure to select the representation.
35
template <unsigned Bits, bool Signed> struct Repr;
36
template <> struct Repr<8, false> { using Type = uint8_t; };
37
template <> struct Repr<16, false> { using Type = uint16_t; };
38
template <> struct Repr<32, false> { using Type = uint32_t; };
39
template <> struct Repr<64, false> { using Type = uint64_t; };
40
template <> struct Repr<8, true> { using Type = int8_t; };
41
template <> struct Repr<16, true> { using Type = int16_t; };
42
template <> struct Repr<32, true> { using Type = int32_t; };
43
template <> struct Repr<64, true> { using Type = int64_t; };
44
45
/// Wrapper around numeric types.
46
///
47
/// These wrappers are required to shared an interface between APSint and
48
/// builtin primitive numeral types, while optimising for storage and
49
/// allowing methods operating on primitive type to compile to fast code.
50
template <unsigned Bits, bool Signed> class Integral final {
51
private:
52
  template <unsigned OtherBits, bool OtherSigned> friend class Integral;
53
54
  // The primitive representing the integral.
55
  using ReprT = typename Repr<Bits, Signed>::Type;
56
  ReprT V;
57
58
  /// Primitive representing limits.
59
  static const auto Min = std::numeric_limits<ReprT>::min();
60
  static const auto Max = std::numeric_limits<ReprT>::max();
61
62
  /// Construct an integral from anything that is convertible to storage.
63
0
  template <typename T> explicit Integral(T V) : V(V) {}
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<long>(long)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<short>(short)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<int>(int)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
64
65
public:
66
  using AsUnsigned = Integral<Bits, false>;
67
68
  /// Zero-initializes an integral.
69
0
  Integral() : V(0) {}
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral()
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral()
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral()
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral()
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral()
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral()
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral()
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral()
70
71
  /// Constructs an integral from another integral.
72
  template <unsigned SrcBits, bool SrcSign>
73
0
  explicit Integral(Integral<SrcBits, SrcSign> V) : V(V.V) {}
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral<32u, false>(clang::interp::Integral<32u, false>)
74
75
  /// Construct an integral from a value based on signedness.
76
  explicit Integral(const APSInt &V)
77
0
      : V(V.isSigned() ? V.getSExtValue() : V.getZExtValue()) {}
Unexecuted instantiation: clang::interp::Integral<8u, false>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<8u, true>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<16u, false>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<16u, true>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<32u, false>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<32u, true>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<64u, false>::Integral(llvm::APSInt const&)
Unexecuted instantiation: clang::interp::Integral<64u, true>::Integral(llvm::APSInt const&)
78
79
0
  bool operator<(Integral RHS) const { return V < RHS.V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator<(clang::interp::Integral<8u, false>) const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator<(clang::interp::Integral<8u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator<(clang::interp::Integral<16u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator<(clang::interp::Integral<16u, false>) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator<(clang::interp::Integral<32u, true>) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator<(clang::interp::Integral<32u, false>) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator<(clang::interp::Integral<64u, true>) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator<(clang::interp::Integral<64u, false>) const
80
0
  bool operator>(Integral RHS) const { return V > RHS.V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator>(clang::interp::Integral<8u, false>) const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator>(clang::interp::Integral<8u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator>(clang::interp::Integral<16u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator>(clang::interp::Integral<16u, false>) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator>(clang::interp::Integral<32u, true>) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator>(clang::interp::Integral<32u, false>) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator>(clang::interp::Integral<64u, true>) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator>(clang::interp::Integral<64u, false>) const
81
  bool operator<=(Integral RHS) const { return V <= RHS.V; }
82
0
  bool operator>=(Integral RHS) const { return V >= RHS.V; }
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator>=(clang::interp::Integral<8u, true>) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator>=(clang::interp::Integral<8u, false>) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator>=(clang::interp::Integral<16u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator>=(clang::interp::Integral<16u, false>) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator>=(clang::interp::Integral<32u, true>) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator>=(clang::interp::Integral<32u, false>) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator>=(clang::interp::Integral<64u, true>) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator>=(clang::interp::Integral<64u, false>) const
83
0
  bool operator==(Integral RHS) const { return V == RHS.V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator==(clang::interp::Integral<8u, false>) const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator==(clang::interp::Integral<8u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator==(clang::interp::Integral<16u, true>) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator==(clang::interp::Integral<16u, false>) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator==(clang::interp::Integral<32u, true>) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator==(clang::interp::Integral<32u, false>) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator==(clang::interp::Integral<64u, true>) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator==(clang::interp::Integral<64u, false>) const
84
  bool operator!=(Integral RHS) const { return V != RHS.V; }
85
86
  bool operator>(unsigned RHS) const {
87
    return V >= 0 && static_cast<unsigned>(V) > RHS;
88
  }
89
90
0
  Integral operator-() const { return Integral(-V); }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator-() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator-() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator-() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator-() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator-() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator-() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator-() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator-() const
91
0
  Integral operator-(const Integral &Other) const {
92
0
    return Integral(V - Other.V);
93
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator-(clang::interp::Integral<8u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator-(clang::interp::Integral<8u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator-(clang::interp::Integral<16u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator-(clang::interp::Integral<16u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator-(clang::interp::Integral<32u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator-(clang::interp::Integral<32u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator-(clang::interp::Integral<64u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator-(clang::interp::Integral<64u, false> const&) const
94
  Integral operator~() const { return Integral(~V); }
95
96
  template <unsigned DstBits, bool DstSign>
97
  explicit operator Integral<DstBits, DstSign>() const {
98
    return Integral<DstBits, DstSign>(V);
99
  }
100
101
0
  explicit operator unsigned() const { return V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator unsigned int() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator unsigned int() const
102
0
  explicit operator int64_t() const { return V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator long() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator long() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator long() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator long() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator long() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator long() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator long() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator long() const
103
0
  explicit operator uint64_t() const { return V; }
Unexecuted instantiation: clang::interp::Integral<8u, true>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<8u, false>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::operator unsigned long() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::operator unsigned long() const
104
  explicit operator int32_t() const { return V; }
105
106
0
  APSInt toAPSInt() const {
107
0
    return APSInt(APInt(Bits, static_cast<uint64_t>(V), Signed), !Signed);
108
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::toAPSInt() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::toAPSInt() const
109
0
  APSInt toAPSInt(unsigned NumBits) const {
110
0
    if constexpr (Signed)
111
0
      return APSInt(toAPSInt().sextOrTrunc(NumBits), !Signed);
112
0
    else
113
0
      return APSInt(toAPSInt().zextOrTrunc(NumBits), !Signed);
114
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::toAPSInt(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::toAPSInt(unsigned int) const
115
0
  APValue toAPValue() const { return APValue(toAPSInt()); }
Unexecuted instantiation: clang::interp::Integral<8u, true>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<8u, false>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::toAPValue() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::toAPValue() const
116
117
0
  Integral<Bits, false> toUnsigned() const {
118
0
    return Integral<Bits, false>(*this);
119
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<8u, false>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::toUnsigned() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::toUnsigned() const
120
121
0
  constexpr static unsigned bitWidth() { return Bits; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<8u, true>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<16u, true>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<16u, false>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<32u, true>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<32u, false>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<64u, true>::bitWidth()
Unexecuted instantiation: clang::interp::Integral<64u, false>::bitWidth()
122
123
0
  bool isZero() const { return !V; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::isZero() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::isZero() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::isZero() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::isZero() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::isZero() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::isZero() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::isZero() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::isZero() const
124
125
0
  bool isMin() const { return *this == min(bitWidth()); }
Unexecuted instantiation: clang::interp::Integral<8u, false>::isMin() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::isMin() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::isMin() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::isMin() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::isMin() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::isMin() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::isMin() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::isMin() const
126
127
0
  bool isMinusOne() const { return Signed && V == ReprT(-1); }
Unexecuted instantiation: clang::interp::Integral<8u, true>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<8u, false>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::isMinusOne() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::isMinusOne() const
128
129
0
  constexpr static bool isSigned() { return Signed; }
Unexecuted instantiation: clang::interp::Integral<8u, false>::isSigned()
Unexecuted instantiation: clang::interp::Integral<8u, true>::isSigned()
Unexecuted instantiation: clang::interp::Integral<16u, false>::isSigned()
Unexecuted instantiation: clang::interp::Integral<16u, true>::isSigned()
Unexecuted instantiation: clang::interp::Integral<32u, false>::isSigned()
Unexecuted instantiation: clang::interp::Integral<32u, true>::isSigned()
Unexecuted instantiation: clang::interp::Integral<64u, false>::isSigned()
Unexecuted instantiation: clang::interp::Integral<64u, true>::isSigned()
130
131
0
  bool isNegative() const { return V < ReprT(0); }
Unexecuted instantiation: clang::interp::Integral<8u, false>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::isNegative() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::isNegative() const
132
0
  bool isPositive() const { return !isNegative(); }
Unexecuted instantiation: clang::interp::Integral<8u, false>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<8u, true>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<16u, true>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<32u, true>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<64u, true>::isPositive() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::isPositive() const
133
134
0
  ComparisonCategoryResult compare(const Integral &RHS) const {
135
0
    return Compare(V, RHS.V);
136
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::compare(clang::interp::Integral<8u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::compare(clang::interp::Integral<8u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::compare(clang::interp::Integral<16u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::compare(clang::interp::Integral<16u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::compare(clang::interp::Integral<32u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::compare(clang::interp::Integral<32u, false> const&) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::compare(clang::interp::Integral<64u, true> const&) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::compare(clang::interp::Integral<64u, false> const&) const
137
138
0
  std::string toDiagnosticString(const ASTContext &Ctx) const {
139
0
    std::string NameStr;
140
0
    llvm::raw_string_ostream OS(NameStr);
141
0
    OS << V;
142
0
    return NameStr;
143
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::toDiagnosticString(clang::ASTContext const&) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::toDiagnosticString(clang::ASTContext const&) const
144
145
0
  unsigned countLeadingZeros() const {
146
0
    if constexpr (!Signed)
147
0
      return llvm::countl_zero<ReprT>(V);
148
0
    llvm_unreachable("Don't call countLeadingZeros() on signed types.");
149
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false>::countLeadingZeros() const
Unexecuted instantiation: clang::interp::Integral<16u, false>::countLeadingZeros() const
Unexecuted instantiation: clang::interp::Integral<32u, false>::countLeadingZeros() const
Unexecuted instantiation: clang::interp::Integral<64u, false>::countLeadingZeros() const
150
151
0
  Integral truncate(unsigned TruncBits) const {
152
0
    if (TruncBits >= Bits)
153
0
      return *this;
154
0
    const ReprT BitMask = (ReprT(1) << ReprT(TruncBits)) - 1;
155
0
    const ReprT SignBit = ReprT(1) << (TruncBits - 1);
156
0
    const ReprT ExtMask = ~BitMask;
157
0
    return Integral((V & BitMask) | (Signed && (V & SignBit) ? ExtMask : 0));
158
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::truncate(unsigned int) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::truncate(unsigned int) const
159
160
0
  void print(llvm::raw_ostream &OS) const { OS << V; }
Unexecuted instantiation: clang::interp::Integral<8u, true>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<8u, false>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<16u, true>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<16u, false>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<32u, true>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<32u, false>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<64u, true>::print(llvm::raw_ostream&) const
Unexecuted instantiation: clang::interp::Integral<64u, false>::print(llvm::raw_ostream&) const
161
162
0
  static Integral min(unsigned NumBits) {
163
0
    return Integral(Min);
164
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true>::min(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false>::min(unsigned int)
165
  static Integral max(unsigned NumBits) {
166
    return Integral(Max);
167
  }
168
169
0
  template <typename ValT> static Integral from(ValT Value) {
170
0
    if constexpr (std::is_integral<ValT>::value)
171
0
      return Integral(Value);
172
0
    else
173
0
      return Integral::from(static_cast<Integral::ReprT>(Value));
174
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<unsigned char>(unsigned char)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<signed char>(signed char)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<unsigned short>(unsigned short)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<short>(short)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<clang::interp::Boolean>(clang::interp::Boolean)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<unsigned int>(unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<long>(long)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<int>(int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<unsigned long>(unsigned long)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<unsigned long>(unsigned long)
175
176
  template <unsigned SrcBits, bool SrcSign>
177
  static std::enable_if_t<SrcBits != 0, Integral>
178
0
  from(Integral<SrcBits, SrcSign> Value) {
179
0
    return Integral(Value.V);
180
0
  }
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<8u, false>(clang::interp::Integral<8u, false>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(8u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<8u, true>(clang::interp::Integral<8u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<16u, false>(clang::interp::Integral<16u, false>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(16u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<16u, true>(clang::interp::Integral<16u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<32u, false>(clang::interp::Integral<32u, false>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(32u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<32u, true>(clang::interp::Integral<32u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<64u, false>(clang::interp::Integral<64u, false>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<8u, false> >::type clang::interp::Integral<8u, false>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<8u, true> >::type clang::interp::Integral<8u, true>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<16u, false> >::type clang::interp::Integral<16u, false>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<16u, true> >::type clang::interp::Integral<16u, true>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<32u, false> >::type clang::interp::Integral<32u, false>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<32u, true> >::type clang::interp::Integral<32u, true>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<64u, false> >::type clang::interp::Integral<64u, false>::from<64u, true>(clang::interp::Integral<64u, true>)
Unexecuted instantiation: std::__1::enable_if<(64u)!=(0), clang::interp::Integral<64u, true> >::type clang::interp::Integral<64u, true>::from<64u, true>(clang::interp::Integral<64u, true>)
181
182
0
  static Integral zero() { return from(0); }
Unexecuted instantiation: clang::interp::Integral<8u, true>::zero()
Unexecuted instantiation: clang::interp::Integral<8u, false>::zero()
Unexecuted instantiation: clang::interp::Integral<16u, true>::zero()
Unexecuted instantiation: clang::interp::Integral<16u, false>::zero()
Unexecuted instantiation: clang::interp::Integral<32u, true>::zero()
Unexecuted instantiation: clang::interp::Integral<32u, false>::zero()
Unexecuted instantiation: clang::interp::Integral<64u, true>::zero()
Unexecuted instantiation: clang::interp::Integral<64u, false>::zero()
183
184
0
  template <typename T> static Integral from(T Value, unsigned NumBits) {
185
0
    return Integral(Value);
186
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<8u, false> >(clang::interp::Integral<8u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, true> clang::interp::Integral<8u, true>::from<clang::interp::Integral<8u, true> >(clang::interp::Integral<8u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, true> clang::interp::Integral<16u, true>::from<clang::interp::Integral<16u, true> >(clang::interp::Integral<16u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<16u, false> >(clang::interp::Integral<16u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, true> clang::interp::Integral<32u, true>::from<clang::interp::Integral<32u, true> >(clang::interp::Integral<32u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<32u, false> >(clang::interp::Integral<32u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, true> clang::interp::Integral<64u, true>::from<clang::interp::Integral<64u, true> >(clang::interp::Integral<64u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<long>(long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<unsigned int>(unsigned int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<64u, false> >(clang::interp::Integral<64u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<int>(int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<8u, true> >(clang::interp::Integral<8u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<16u, true> >(clang::interp::Integral<16u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<16u, false> >(clang::interp::Integral<16u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<32u, true> >(clang::interp::Integral<32u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<32u, false> >(clang::interp::Integral<32u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<64u, true> >(clang::interp::Integral<64u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::Integral<64u, false> >(clang::interp::Integral<64u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<8u, false> clang::interp::Integral<8u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<int>(int, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<8u, true> >(clang::interp::Integral<8u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<8u, false> >(clang::interp::Integral<8u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<16u, true> >(clang::interp::Integral<16u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<32u, true> >(clang::interp::Integral<32u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<32u, false> >(clang::interp::Integral<32u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<64u, true> >(clang::interp::Integral<64u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::Integral<64u, false> >(clang::interp::Integral<64u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<16u, false> clang::interp::Integral<16u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<8u, true> >(clang::interp::Integral<8u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<8u, false> >(clang::interp::Integral<8u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<16u, true> >(clang::interp::Integral<16u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<16u, false> >(clang::interp::Integral<16u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<32u, true> >(clang::interp::Integral<32u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<64u, true> >(clang::interp::Integral<64u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::Integral<64u, false> >(clang::interp::Integral<64u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<32u, false> clang::interp::Integral<32u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<unsigned long>(unsigned long, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<8u, true> >(clang::interp::Integral<8u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<8u, false> >(clang::interp::Integral<8u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<16u, true> >(clang::interp::Integral<16u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<16u, false> >(clang::interp::Integral<16u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<32u, true> >(clang::interp::Integral<32u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<32u, false> >(clang::interp::Integral<32u, false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::Integral<64u, true> >(clang::interp::Integral<64u, true>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::IntegralAP<false> >(clang::interp::IntegralAP<false>, unsigned int)
Unexecuted instantiation: clang::interp::Integral<64u, false> clang::interp::Integral<64u, false>::from<clang::interp::IntegralAP<true> >(clang::interp::IntegralAP<true>, unsigned int)
187
188
  static bool inRange(int64_t Value, unsigned NumBits) {
189
    return CheckRange<ReprT, Min, Max>(Value);
190
  }
191
192
0
  static bool increment(Integral A, Integral *R) {
193
0
    return add(A, Integral(ReprT(1)), A.bitWidth(), R);
194
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::increment(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::increment(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::increment(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::increment(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::increment(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::increment(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::increment(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::increment(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>*)
195
196
0
  static bool decrement(Integral A, Integral *R) {
197
0
    return sub(A, Integral(ReprT(1)), A.bitWidth(), R);
198
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::decrement(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::decrement(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::decrement(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::decrement(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::decrement(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::decrement(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::decrement(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::decrement(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>*)
199
200
0
  static bool add(Integral A, Integral B, unsigned OpBits, Integral *R) {
201
0
    return CheckAddUB(A.V, B.V, R->V);
202
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::add(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::add(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::add(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::add(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::add(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::add(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::add(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::add(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
203
204
0
  static bool sub(Integral A, Integral B, unsigned OpBits, Integral *R) {
205
0
    return CheckSubUB(A.V, B.V, R->V);
206
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::sub(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::sub(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::sub(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::sub(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::sub(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::sub(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::sub(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::sub(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
207
208
0
  static bool mul(Integral A, Integral B, unsigned OpBits, Integral *R) {
209
0
    return CheckMulUB(A.V, B.V, R->V);
210
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::mul(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::mul(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::mul(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::mul(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::mul(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::mul(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::mul(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::mul(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
211
212
0
  static bool rem(Integral A, Integral B, unsigned OpBits, Integral *R) {
213
0
    *R = Integral(A.V % B.V);
214
0
    return false;
215
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::rem(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::rem(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::rem(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::rem(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::rem(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::rem(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::rem(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::rem(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
216
217
0
  static bool div(Integral A, Integral B, unsigned OpBits, Integral *R) {
218
0
    *R = Integral(A.V / B.V);
219
0
    return false;
220
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::div(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::div(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::div(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::div(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::div(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::div(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::div(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::div(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
221
222
0
  static bool bitAnd(Integral A, Integral B, unsigned OpBits, Integral *R) {
223
0
    *R = Integral(A.V & B.V);
224
0
    return false;
225
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::bitAnd(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::bitAnd(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::bitAnd(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::bitAnd(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::bitAnd(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::bitAnd(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::bitAnd(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::bitAnd(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
226
227
0
  static bool bitOr(Integral A, Integral B, unsigned OpBits, Integral *R) {
228
0
    *R = Integral(A.V | B.V);
229
0
    return false;
230
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::bitOr(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::bitOr(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::bitOr(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::bitOr(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::bitOr(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::bitOr(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::bitOr(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::bitOr(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
231
232
0
  static bool bitXor(Integral A, Integral B, unsigned OpBits, Integral *R) {
233
0
    *R = Integral(A.V ^ B.V);
234
0
    return false;
235
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::bitXor(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>, unsigned int, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::bitXor(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::bitXor(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>, unsigned int, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::bitXor(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::bitXor(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>, unsigned int, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::bitXor(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::bitXor(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>, unsigned int, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::bitXor(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
236
237
0
  static bool neg(Integral A, Integral *R) {
238
0
    if (Signed && A.isMin())
239
0
      return true;
240
241
0
    *R = -A;
242
0
    return false;
243
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::neg(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::neg(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::neg(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::neg(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::neg(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::neg(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::neg(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::neg(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>*)
244
245
0
  static bool comp(Integral A, Integral *R) {
246
0
    *R = Integral(~A.V);
247
0
    return false;
248
0
  }
Unexecuted instantiation: clang::interp::Integral<8u, true>::comp(clang::interp::Integral<8u, true>, clang::interp::Integral<8u, true>*)
Unexecuted instantiation: clang::interp::Integral<8u, false>::comp(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: clang::interp::Integral<16u, true>::comp(clang::interp::Integral<16u, true>, clang::interp::Integral<16u, true>*)
Unexecuted instantiation: clang::interp::Integral<16u, false>::comp(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: clang::interp::Integral<32u, true>::comp(clang::interp::Integral<32u, true>, clang::interp::Integral<32u, true>*)
Unexecuted instantiation: clang::interp::Integral<32u, false>::comp(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: clang::interp::Integral<64u, true>::comp(clang::interp::Integral<64u, true>, clang::interp::Integral<64u, true>*)
Unexecuted instantiation: clang::interp::Integral<64u, false>::comp(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>*)
249
250
  template <unsigned RHSBits, bool RHSSign>
251
  static void shiftLeft(const Integral A, const Integral<RHSBits, RHSSign> B,
252
0
                        unsigned OpBits, Integral *R) {
253
0
    *R = Integral::from(A.V << B.V, OpBits);
254
0
  }
Unexecuted instantiation: void clang::interp::Integral<8u, false>::shiftLeft<8u, false>(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: void clang::interp::Integral<16u, false>::shiftLeft<16u, false>(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: void clang::interp::Integral<32u, false>::shiftLeft<32u, false>(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: void clang::interp::Integral<64u, false>::shiftLeft<64u, false>(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
255
256
  template <unsigned RHSBits, bool RHSSign>
257
  static void shiftRight(const Integral A, const Integral<RHSBits, RHSSign> B,
258
0
                         unsigned OpBits, Integral *R) {
259
0
    *R = Integral::from(A.V >> B.V, OpBits);
260
0
  }
Unexecuted instantiation: void clang::interp::Integral<8u, false>::shiftRight<8u, false>(clang::interp::Integral<8u, false>, clang::interp::Integral<8u, false>, unsigned int, clang::interp::Integral<8u, false>*)
Unexecuted instantiation: void clang::interp::Integral<16u, false>::shiftRight<16u, false>(clang::interp::Integral<16u, false>, clang::interp::Integral<16u, false>, unsigned int, clang::interp::Integral<16u, false>*)
Unexecuted instantiation: void clang::interp::Integral<32u, false>::shiftRight<32u, false>(clang::interp::Integral<32u, false>, clang::interp::Integral<32u, false>, unsigned int, clang::interp::Integral<32u, false>*)
Unexecuted instantiation: void clang::interp::Integral<64u, false>::shiftRight<64u, false>(clang::interp::Integral<64u, false>, clang::interp::Integral<64u, false>, unsigned int, clang::interp::Integral<64u, false>*)
261
262
private:
263
0
  template <typename T> static bool CheckAddUB(T A, T B, T &R) {
264
0
    if constexpr (std::is_signed_v<T>) {
265
0
      return llvm::AddOverflow<T>(A, B, R);
266
0
    } else {
267
0
      R = A + B;
268
0
      return false;
269
0
    }
270
0
  }
Unexecuted instantiation: bool clang::interp::Integral<8u, true>::CheckAddUB<signed char>(signed char, signed char, signed char&)
Unexecuted instantiation: bool clang::interp::Integral<8u, false>::CheckAddUB<unsigned char>(unsigned char, unsigned char, unsigned char&)
Unexecuted instantiation: bool clang::interp::Integral<16u, true>::CheckAddUB<short>(short, short, short&)
Unexecuted instantiation: bool clang::interp::Integral<16u, false>::CheckAddUB<unsigned short>(unsigned short, unsigned short, unsigned short&)
Unexecuted instantiation: bool clang::interp::Integral<32u, true>::CheckAddUB<int>(int, int, int&)
Unexecuted instantiation: bool clang::interp::Integral<32u, false>::CheckAddUB<unsigned int>(unsigned int, unsigned int, unsigned int&)
Unexecuted instantiation: bool clang::interp::Integral<64u, true>::CheckAddUB<long>(long, long, long&)
Unexecuted instantiation: bool clang::interp::Integral<64u, false>::CheckAddUB<unsigned long>(unsigned long, unsigned long, unsigned long&)
271
272
0
  template <typename T> static bool CheckSubUB(T A, T B, T &R) {
273
0
    if constexpr (std::is_signed_v<T>) {
274
0
      return llvm::SubOverflow<T>(A, B, R);
275
0
    } else {
276
0
      R = A - B;
277
0
      return false;
278
0
    }
279
0
  }
Unexecuted instantiation: bool clang::interp::Integral<8u, true>::CheckSubUB<signed char>(signed char, signed char, signed char&)
Unexecuted instantiation: bool clang::interp::Integral<8u, false>::CheckSubUB<unsigned char>(unsigned char, unsigned char, unsigned char&)
Unexecuted instantiation: bool clang::interp::Integral<16u, true>::CheckSubUB<short>(short, short, short&)
Unexecuted instantiation: bool clang::interp::Integral<16u, false>::CheckSubUB<unsigned short>(unsigned short, unsigned short, unsigned short&)
Unexecuted instantiation: bool clang::interp::Integral<32u, true>::CheckSubUB<int>(int, int, int&)
Unexecuted instantiation: bool clang::interp::Integral<32u, false>::CheckSubUB<unsigned int>(unsigned int, unsigned int, unsigned int&)
Unexecuted instantiation: bool clang::interp::Integral<64u, true>::CheckSubUB<long>(long, long, long&)
Unexecuted instantiation: bool clang::interp::Integral<64u, false>::CheckSubUB<unsigned long>(unsigned long, unsigned long, unsigned long&)
280
281
0
  template <typename T> static bool CheckMulUB(T A, T B, T &R) {
282
0
    if constexpr (std::is_signed_v<T>) {
283
0
      return llvm::MulOverflow<T>(A, B, R);
284
0
    } else {
285
0
      R = A * B;
286
0
      return false;
287
0
    }
288
0
  }
Unexecuted instantiation: bool clang::interp::Integral<8u, true>::CheckMulUB<signed char>(signed char, signed char, signed char&)
Unexecuted instantiation: bool clang::interp::Integral<8u, false>::CheckMulUB<unsigned char>(unsigned char, unsigned char, unsigned char&)
Unexecuted instantiation: bool clang::interp::Integral<16u, true>::CheckMulUB<short>(short, short, short&)
Unexecuted instantiation: bool clang::interp::Integral<16u, false>::CheckMulUB<unsigned short>(unsigned short, unsigned short, unsigned short&)
Unexecuted instantiation: bool clang::interp::Integral<32u, true>::CheckMulUB<int>(int, int, int&)
Unexecuted instantiation: bool clang::interp::Integral<32u, false>::CheckMulUB<unsigned int>(unsigned int, unsigned int, unsigned int&)
Unexecuted instantiation: bool clang::interp::Integral<64u, true>::CheckMulUB<long>(long, long, long&)
Unexecuted instantiation: bool clang::interp::Integral<64u, false>::CheckMulUB<unsigned long>(unsigned long, unsigned long, unsigned long&)
289
  template <typename T, T Min, T Max> static bool CheckRange(int64_t V) {
290
    if constexpr (std::is_signed_v<T>) {
291
      return Min <= V && V <= Max;
292
    } else {
293
      return V >= 0 && static_cast<uint64_t>(V) <= Max;
294
    }
295
  }
296
};
297
298
template <unsigned Bits, bool Signed>
299
0
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, Integral<Bits, Signed> I) {
300
0
  I.print(OS);
301
0
  return OS;
302
0
}
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <8u, true>(llvm::raw_ostream&, clang::interp::Integral<8u, true>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <8u, false>(llvm::raw_ostream&, clang::interp::Integral<8u, false>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <16u, true>(llvm::raw_ostream&, clang::interp::Integral<16u, true>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <16u, false>(llvm::raw_ostream&, clang::interp::Integral<16u, false>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <32u, true>(llvm::raw_ostream&, clang::interp::Integral<32u, true>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <32u, false>(llvm::raw_ostream&, clang::interp::Integral<32u, false>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <64u, true>(llvm::raw_ostream&, clang::interp::Integral<64u, true>)
Unexecuted instantiation: llvm::raw_ostream& clang::interp::operator<< <64u, false>(llvm::raw_ostream&, clang::interp::Integral<64u, false>)
303
304
} // namespace interp
305
} // namespace clang
306
307
#endif