LLVM 19.0.0git
COM.inc
Go to the documentation of this file.
1//==- llvm/Support/Windows/COM.inc - Windows COM Implementation -*- 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// This file implements the Windows portion of COM support.
10//
11//===----------------------------------------------------------------------===//
12
13//===----------------------------------------------------------------------===//
14//=== WARNING: Implementation here must contain only Windows code.
15//===----------------------------------------------------------------------===//
16
17#include <objbase.h>
18
19namespace llvm {
20namespace sys {
21
23 bool SpeedOverMemory) {
24 DWORD Coinit = 0;
25 if (Threading == COMThreadingMode::SingleThreaded)
26 Coinit |= COINIT_APARTMENTTHREADED;
27 else
28 Coinit |= COINIT_MULTITHREADED;
29 if (SpeedOverMemory)
30 Coinit |= COINIT_SPEED_OVER_MEMORY;
31 ::CoInitializeEx(nullptr, Coinit);
32}
33
34InitializeCOMRAII::~InitializeCOMRAII() { ::CoUninitialize(); }
35} // namespace sys
36} // namespace llvm
InitializeCOMRAII(COMThreadingMode Threading, bool SpeedOverMemory=false)
COMThreadingMode
Definition: COM.h:20
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18