Skip to content

Commit 30c6ee2

Browse files
committed
[Support] Remove reinterpret_cast's from Expected and ErrorOr
1 parent 433aa9e commit 30c6ee2

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

llvm/include/llvm/Support/Error.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -679,22 +679,22 @@ template <class T> class [[nodiscard]] Expected {
679679

680680
storage_type *getStorage() {
681681
assert(!HasError && "Cannot get value when an error exists!");
682-
return reinterpret_cast<storage_type *>(&TStorage);
682+
return &TStorage;
683683
}
684684

685685
const storage_type *getStorage() const {
686686
assert(!HasError && "Cannot get value when an error exists!");
687-
return reinterpret_cast<const storage_type *>(&TStorage);
687+
return &TStorage;
688688
}
689689

690690
error_type *getErrorStorage() {
691691
assert(HasError && "Cannot get error when a value exists!");
692-
return reinterpret_cast<error_type *>(&ErrorStorage);
692+
return &ErrorStorage;
693693
}
694694

695695
const error_type *getErrorStorage() const {
696696
assert(HasError && "Cannot get error when a value exists!");
697-
return reinterpret_cast<const error_type *>(&ErrorStorage);
697+
return &ErrorStorage;
698698
}
699699

700700
// Used by ExpectedAsOutParameter to reset the checked flag.

llvm/include/llvm/Support/ErrorOr.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,21 +233,22 @@ class ErrorOr {
233233

234234
storage_type *getStorage() {
235235
assert(!HasError && "Cannot get value when an error exists!");
236-
return reinterpret_cast<storage_type *>(&TStorage);
236+
return &TStorage;
237237
}
238238

239239
const storage_type *getStorage() const {
240240
assert(!HasError && "Cannot get value when an error exists!");
241-
return reinterpret_cast<const storage_type *>(&TStorage);
241+
return &TStorage;
242242
}
243243

244244
std::error_code *getErrorStorage() {
245245
assert(HasError && "Cannot get error when a value exists!");
246-
return reinterpret_cast<std::error_code *>(&ErrorStorage);
246+
return &ErrorStorage;
247247
}
248248

249249
const std::error_code *getErrorStorage() const {
250-
return const_cast<ErrorOr<T> *>(this)->getErrorStorage();
250+
assert(HasError && "Cannot get error when a value exists!");
251+
return &ErrorStorage;
251252
}
252253

253254
union {

0 commit comments

Comments
 (0)