About
Contact
QtCreator
KDevelop
Solarized
1
//===- unittest/StaticAnalyzer/APSIntTest.cpp - getAPSIntType test --===//
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
#include
"clang/Basic/TargetInfo.h"
10
#include
"clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h"
11
#include
"clang/Tooling/Tooling.h"
12
#include
"llvm/ADT/APSInt.h"
13
#include
"llvm/Support/raw_ostream.h"
14
#include
"gtest/gtest.h"
15
16
namespace
{
17
18
TEST
(getAPSIntTypeTest, APSIntTypeTests) {
19
std::
unique_ptr
<
clang::
ASTUnit
>
AST
=
clang::tooling::
buildASTFromCode
(
Code:
""
);
20
clang::
ASTContext
&
Context
=
AST
->
getASTContext
();
21
llvm::
BumpPtrAllocator
Arena
;
22
clang::ento::
BasicValueFactory
BVF
{
Context
,
Arena
};
23
24
clang::ento::
APSIntType
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.LongAccumTy);
25
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongAccumWidth
());
26
EXPECT_FALSE
(
Ty
.
isUnsigned
());
27
28
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.UnsignedLongAccumTy);
29
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongAccumWidth
());
30
EXPECT_TRUE
(
Ty
.
isUnsigned
());
31
32
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.LongFractTy);
33
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongFractWidth
());
34
EXPECT_FALSE
(
Ty
.
isUnsigned
());
35
36
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.UnsignedLongFractTy);
37
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongFractWidth
());
38
EXPECT_TRUE
(
Ty
.
isUnsigned
());
39
40
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.SignedCharTy);
41
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getCharWidth
());
42
EXPECT_FALSE
(
Ty
.
isUnsigned
());
43
44
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.UnsignedCharTy);
45
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getCharWidth
());
46
EXPECT_TRUE
(
Ty
.
isUnsigned
());
47
48
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.LongTy);
49
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongWidth
());
50
EXPECT_FALSE
(
Ty
.
isUnsigned
());
51
52
Ty
=
BVF
.
getAPSIntType
(
T:
Context
.UnsignedLongTy);
53
EXPECT_TRUE
(
Ty
.
getBitWidth
() ==
Context
.
getTargetInfo
().
getLongWidth
());
54
EXPECT_TRUE
(
Ty
.
isUnsigned
());
55
}
56
57
}
// end namespace
58