 |
|
 |
|
| Files: |
1 |
|
Branches Taken: |
24.0% |
25 / 104 |
| Generated: |
2010-02-10 01:31 |
|
Branches Executed: |
48.1% |
50 / 104 |
| |
|
Line Coverage: |
49.3% |
36 / 73 |
| |
 |
|
 |
1 : //===--- AttrImpl.cpp - Classes for representing attributes -----*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : // This file contains out-of-line virtual methods for Attr classes.
11 : //
12 : //===----------------------------------------------------------------------===//
13 :
14 :
15 : #include "clang/AST/Attr.h"
16 : #include "clang/AST/ASTContext.h"
17 : using namespace clang;
18 :
19 : #define DEF_SIMPLE_ATTR_CLONE(ATTR) \
20 : Attr *ATTR##Attr::clone(ASTContext &C) const { \
21 : return ::new (C) ATTR##Attr; \
22 : }
23 :
24 : // FIXME: Can we use variadic macro to define DEF_SIMPLE_ATTR_CLONE for
25 : // "non-simple" classes?
26 :
0: branch 1 not taken
0: branch 2 not taken
27 0: DEF_SIMPLE_ATTR_CLONE(Packed)
2: branch 1 taken
0: branch 2 not taken
28 2: DEF_SIMPLE_ATTR_CLONE(AlwaysInline)
4: branch 1 taken
0: branch 2 not taken
29 4: DEF_SIMPLE_ATTR_CLONE(Malloc)
0: branch 1 not taken
0: branch 2 not taken
30 0: DEF_SIMPLE_ATTR_CLONE(NoReturn)
0: branch 1 not taken
0: branch 2 not taken
31 0: DEF_SIMPLE_ATTR_CLONE(AnalyzerNoReturn)
8: branch 1 taken
0: branch 2 not taken
32 8: DEF_SIMPLE_ATTR_CLONE(Deprecated)
0: branch 1 not taken
0: branch 2 not taken
33 0: DEF_SIMPLE_ATTR_CLONE(Final)
0: branch 1 not taken
0: branch 2 not taken
34 0: DEF_SIMPLE_ATTR_CLONE(Unavailable)
4: branch 1 taken
0: branch 2 not taken
35 4: DEF_SIMPLE_ATTR_CLONE(Unused)
4: branch 1 taken
0: branch 2 not taken
36 4: DEF_SIMPLE_ATTR_CLONE(Used)
8: branch 1 taken
0: branch 2 not taken
37 8: DEF_SIMPLE_ATTR_CLONE(Weak)
2: branch 1 taken
0: branch 2 not taken
38 2: DEF_SIMPLE_ATTR_CLONE(WeakImport)
7: branch 1 taken
0: branch 2 not taken
39 7: DEF_SIMPLE_ATTR_CLONE(NoThrow)
3: branch 1 taken
0: branch 2 not taken
40 3: DEF_SIMPLE_ATTR_CLONE(Const)
1: branch 1 taken
0: branch 2 not taken
41 1: DEF_SIMPLE_ATTR_CLONE(Pure)
0: branch 1 not taken
0: branch 2 not taken
42 0: DEF_SIMPLE_ATTR_CLONE(FastCall)
0: branch 1 not taken
0: branch 2 not taken
43 0: DEF_SIMPLE_ATTR_CLONE(StdCall)
0: branch 1 not taken
0: branch 2 not taken
44 0: DEF_SIMPLE_ATTR_CLONE(CDecl)
0: branch 1 not taken
0: branch 2 not taken
45 0: DEF_SIMPLE_ATTR_CLONE(TransparentUnion)
0: branch 1 not taken
0: branch 2 not taken
46 0: DEF_SIMPLE_ATTR_CLONE(ObjCNSObject)
0: branch 1 not taken
0: branch 2 not taken
47 0: DEF_SIMPLE_ATTR_CLONE(ObjCException)
1: branch 1 taken
0: branch 2 not taken
48 1: DEF_SIMPLE_ATTR_CLONE(NoDebug)
0: branch 1 not taken
0: branch 2 not taken
49 0: DEF_SIMPLE_ATTR_CLONE(WarnUnusedResult)
6: branch 1 taken
0: branch 2 not taken
50 6: DEF_SIMPLE_ATTR_CLONE(NoInline)
0: branch 1 not taken
0: branch 2 not taken
51 0: DEF_SIMPLE_ATTR_CLONE(CFReturnsRetained)
0: branch 1 not taken
0: branch 2 not taken
52 0: DEF_SIMPLE_ATTR_CLONE(NSReturnsRetained)
0: branch 1 not taken
0: branch 2 not taken
53 0: DEF_SIMPLE_ATTR_CLONE(BaseCheck)
0: branch 1 not taken
0: branch 2 not taken
54 0: DEF_SIMPLE_ATTR_CLONE(Hiding)
0: branch 1 not taken
0: branch 2 not taken
55 0: DEF_SIMPLE_ATTR_CLONE(Override)
2: branch 1 taken
0: branch 2 not taken
56 2: DEF_SIMPLE_ATTR_CLONE(DLLImport)
1: branch 1 taken
0: branch 2 not taken
57 1: DEF_SIMPLE_ATTR_CLONE(DLLExport)
58 :
59 0: Attr* PragmaPackAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
60 0: return ::new (C) PragmaPackAttr(Alignment);
61 : }
62 :
63 5: Attr* AlignedAttr::clone(ASTContext &C) const {
5: branch 1 taken
0: branch 2 not taken
64 5: return ::new (C) AlignedAttr(Alignment);
65 : }
66 :
67 0: Attr* AnnotateAttr::clone(ASTContext &C) const {
0: branch 2 not taken
0: branch 3 not taken
68 0: return ::new (C) AnnotateAttr(Annotation);
69 : }
70 :
71 5: Attr *AsmLabelAttr::clone(ASTContext &C) const {
5: branch 2 taken
0: branch 3 not taken
72 5: return ::new (C) AsmLabelAttr(Label);
73 : }
74 :
75 3: Attr *AliasAttr::clone(ASTContext &C) const {
3: branch 2 taken
0: branch 3 not taken
76 3: return ::new (C) AliasAttr(Aliasee);
77 : }
78 :
79 10: Attr *ConstructorAttr::clone(ASTContext &C) const {
10: branch 1 taken
0: branch 2 not taken
80 10: return ::new (C) ConstructorAttr(priority);
81 : }
82 :
83 5: Attr *DestructorAttr::clone(ASTContext &C) const {
5: branch 1 taken
0: branch 2 not taken
84 5: return ::new (C) DestructorAttr(priority);
85 : }
86 :
87 0: Attr *IBOutletAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
88 0: return ::new (C) IBOutletAttr;
89 : }
90 :
91 6: Attr *GNUInlineAttr::clone(ASTContext &C) const {
6: branch 1 taken
0: branch 2 not taken
92 6: return ::new (C) GNUInlineAttr;
93 : }
94 :
95 1: Attr *SectionAttr::clone(ASTContext &C) const {
1: branch 2 taken
0: branch 3 not taken
96 1: return ::new (C) SectionAttr(Name);
97 : }
98 :
99 0: Attr *NonNullAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
100 0: return ::new (C) NonNullAttr(ArgNums, Size);
101 : }
102 :
103 69: Attr *FormatAttr::clone(ASTContext &C) const {
69: branch 2 taken
0: branch 3 not taken
104 69: return ::new (C) FormatAttr(Type, formatIdx, firstArg);
105 : }
106 :
107 0: Attr *FormatArgAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
108 0: return ::new (C) FormatArgAttr(formatIdx);
109 : }
110 :
111 1: Attr *SentinelAttr::clone(ASTContext &C) const {
1: branch 1 taken
0: branch 2 not taken
112 1: return ::new (C) SentinelAttr(sentinel, NullPos);
113 : }
114 :
115 1: Attr *VisibilityAttr::clone(ASTContext &C) const {
1: branch 1 taken
0: branch 2 not taken
116 1: return ::new (C) VisibilityAttr(VisibilityType);
117 : }
118 :
119 0: Attr *OverloadableAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
120 0: return ::new (C) OverloadableAttr;
121 : }
122 :
123 0: Attr *BlocksAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
124 0: return ::new (C) BlocksAttr(BlocksAttrType);
125 : }
126 :
127 0: Attr *CleanupAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
128 0: return ::new (C) CleanupAttr(FD);
129 : }
130 :
131 5: Attr *RegparmAttr::clone(ASTContext &C) const {
5: branch 1 taken
0: branch 2 not taken
132 5: return ::new (C) RegparmAttr(NumParams);
133 : }
134 :
135 0: Attr *ReqdWorkGroupSizeAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
136 0: return ::new (C) ReqdWorkGroupSizeAttr(X, Y, Z);
137 : }
138 :
139 0: Attr *MSP430InterruptAttr::clone(ASTContext &C) const {
0: branch 1 not taken
0: branch 2 not taken
140 0: return ::new (C) MSP430InterruptAttr(Number);
141 : }
142 :
143 :
Generated: 2010-02-10 01:31 by zcov