Skip to content

Commit 36e1295

Browse files
committed
Attempt to placate compilers that warn on casts between pointer-to-object and
pointer-to-function types. llvm-svn: 209490
1 parent 5d28ea1 commit 36e1295

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

llvm/include/llvm/ADT/STLExtras.h

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ template<typename Fn> class function_ref;
6767

6868
template<typename Ret, typename ...Params>
6969
class function_ref<Ret(Params...)> {
70-
Ret (*callback)(void *callable, Params ...params);
71-
void *callable;
70+
Ret (*callback)(intptr_t callable, Params ...params);
71+
intptr_t callable;
7272

7373
template<typename Callable>
74-
static Ret callback_fn(void *callable, Params ...params) {
74+
static Ret callback_fn(intptr_t callable, Params ...params) {
7575
return (*reinterpret_cast<Callable*>(callable))(
7676
std::forward<Params>(params)...);
7777
}
@@ -80,7 +80,7 @@ class function_ref<Ret(Params...)> {
8080
template<typename Callable>
8181
function_ref(Callable &&callable)
8282
: callback(callback_fn<typename std::remove_reference<Callable>::type>),
83-
callable(reinterpret_cast<void *>(&callable)) {}
83+
callable(reinterpret_cast<intptr_t>(&callable)) {}
8484
Ret operator()(Params ...params) const {
8585
return callback(callable, std::forward<Params>(params)...);
8686
}
@@ -90,29 +90,29 @@ class function_ref<Ret(Params...)> {
9090

9191
template<typename Ret>
9292
class function_ref<Ret()> {
93-
Ret (*callback)(void *callable);
94-
void *callable;
93+
Ret (*callback)(intptr_t callable);
94+
intptr_t callable;
9595

9696
template<typename Callable>
97-
static Ret callback_fn(void *callable) {
97+
static Ret callback_fn(intptr_t callable) {
9898
return (*reinterpret_cast<Callable*>(callable))();
9999
}
100100

101101
public:
102102
template<typename Callable>
103103
function_ref(Callable &&callable)
104104
: callback(callback_fn<typename std::remove_reference<Callable>::type>),
105-
callable(reinterpret_cast<void *>(&callable)) {}
105+
callable(reinterpret_cast<intptr_t>(&callable)) {}
106106
Ret operator()() const { return callback(callable); }
107107
};
108108

109109
template<typename Ret, typename Param1>
110110
class function_ref<Ret(Param1)> {
111-
Ret (*callback)(void *callable, Param1 param1);
112-
void *callable;
111+
Ret (*callback)(intptr_t callable, Param1 param1);
112+
intptr_t callable;
113113

114114
template<typename Callable>
115-
static Ret callback_fn(void *callable, Param1 param1) {
115+
static Ret callback_fn(intptr_t callable, Param1 param1) {
116116
return (*reinterpret_cast<Callable*>(callable))(
117117
std::forward<Param1>(param1));
118118
}
@@ -121,19 +121,19 @@ class function_ref<Ret(Param1)> {
121121
template<typename Callable>
122122
function_ref(Callable &&callable)
123123
: callback(callback_fn<typename std::remove_reference<Callable>::type>),
124-
callable(reinterpret_cast<void *>(&callable)) {}
124+
callable(reinterpret_cast<intptr_t>(&callable)) {}
125125
Ret operator()(Param1 param1) {
126126
return callback(callable, std::forward<Param1>(param1));
127127
}
128128
};
129129

130130
template<typename Ret, typename Param1, typename Param2>
131131
class function_ref<Ret(Param1, Param2)> {
132-
Ret (*callback)(void *callable, Param1 param1, Param2 param2);
133-
void *callable;
132+
Ret (*callback)(intptr_t callable, Param1 param1, Param2 param2);
133+
intptr_t callable;
134134

135135
template<typename Callable>
136-
static Ret callback_fn(void *callable, Param1 param1, Param2 param2) {
136+
static Ret callback_fn(intptr_t callable, Param1 param1, Param2 param2) {
137137
return (*reinterpret_cast<Callable*>(callable))(
138138
std::forward<Param1>(param1),
139139
std::forward<Param2>(param2));
@@ -143,7 +143,7 @@ class function_ref<Ret(Param1, Param2)> {
143143
template<typename Callable>
144144
function_ref(Callable &&callable)
145145
: callback(callback_fn<typename std::remove_reference<Callable>::type>),
146-
callable(reinterpret_cast<void *>(&callable)) {}
146+
callable(reinterpret_cast<intptr_t>(&callable)) {}
147147
Ret operator()(Param1 param1, Param2 param2) {
148148
return callback(callable,
149149
std::forward<Param1>(param1),
@@ -153,11 +153,11 @@ class function_ref<Ret(Param1, Param2)> {
153153

154154
template<typename Ret, typename Param1, typename Param2, typename Param3>
155155
class function_ref<Ret(Param1, Param2, Param3)> {
156-
Ret (*callback)(void *callable, Param1 param1, Param2 param2, Param3 param3);
157-
void *callable;
156+
Ret (*callback)(intptr_t callable, Param1 param1, Param2 param2, Param3 param3);
157+
intptr_t callable;
158158

159159
template<typename Callable>
160-
static Ret callback_fn(void *callable, Param1 param1, Param2 param2,
160+
static Ret callback_fn(intptr_t callable, Param1 param1, Param2 param2,
161161
Param3 param3) {
162162
return (*reinterpret_cast<Callable*>(callable))(
163163
std::forward<Param1>(param1),
@@ -169,7 +169,7 @@ class function_ref<Ret(Param1, Param2, Param3)> {
169169
template<typename Callable>
170170
function_ref(Callable &&callable)
171171
: callback(callback_fn<typename std::remove_reference<Callable>::type>),
172-
callable(reinterpret_cast<void *>(&callable)) {}
172+
callable(reinterpret_cast<intptr_t>(&callable)) {}
173173
Ret operator()(Param1 param1, Param2 param2, Param3 param3) {
174174
return callback(callable,
175175
std::forward<Param1>(param1),

0 commit comments

Comments
 (0)