blob: 82427e2c122221a457e47d4aab61bd98c39140fd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//====- CIROpInterfaces.cpp - Interface to AST Attributes ---------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// Defines the interface to CIR operations.
//
//===----------------------------------------------------------------------===//
#include "clang/CIR/Interfaces/CIROpInterfaces.h"
using namespace cir;
/// Include the generated type qualifiers interfaces.
#include "clang/CIR/Interfaces/CIROpInterfaces.cpp.inc"
#include "clang/CIR/MissingFeatures.h"
bool CIRGlobalValueInterface::hasDefaultVisibility() {
assert(!cir::MissingFeatures::hiddenVisibility());
assert(!cir::MissingFeatures::protectedVisibility());
return isPublic() || isPrivate();
}
bool CIRGlobalValueInterface::canBenefitFromLocalAlias() {
assert(!cir::MissingFeatures::supportIFuncAttr());
// hasComdat here should be isDeduplicateComdat, but as far as clang codegen
// is concerned, there is no case for Comdat::NoDeduplicate as all comdat
// would be Comdat::Any or Comdat::Largest (in the case of MS ABI). And CIRGen
// wouldn't even generate Comdat::Largest comdat as it tries to leave ABI
// specifics to LLVM lowering stage, thus here we don't need test Comdat
// selectionKind.
return hasDefaultVisibility() && hasExternalLinkage() && !isDeclaration() &&
!hasComdat();
}
|