Skip to content

Commit 9259d27

Browse files
committed
Merge from 'master' to 'sycl-web' (#54)
CONFLICT (content): Merge conflict in clang/include/clang/Basic/DiagnosticGroups.td
2 parents e24ca96 + 2d739f9 commit 9259d27

File tree

178 files changed

+3663
-1388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+3663
-1388
lines changed

clang-tools-extra/clang-tidy/bugprone/ParentVirtualCallCheck.cpp

100755100644
File mode changed.

clang-tools-extra/clang-tidy/bugprone/ParentVirtualCallCheck.h

100755100644
File mode changed.

clang-tools-extra/clangd/Preamble.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,11 @@ buildPreamble(PathRef FileName, CompilerInvocation &CI,
102102
compileCommandsAreEqual(Inputs.CompileCommand, OldCompileCommand) &&
103103
OldPreamble->Preamble.CanReuse(CI, ContentsBuffer.get(), Bounds,
104104
Inputs.FS.get())) {
105-
vlog("Reusing preamble for file {0}", llvm::Twine(FileName));
105+
vlog("Reusing preamble for {0}", FileName);
106106
return OldPreamble;
107107
}
108-
vlog("Preamble for file {0} cannot be reused. Attempting to rebuild it.",
108+
vlog(OldPreamble ? "Rebuilding invalidated preamble for {0}"
109+
: "Building first preamble for {0}",
109110
FileName);
110111

111112
trace::Span Tracer("BuildPreamble");

clang/docs/ClangCommandLineReference.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2430,10 +2430,31 @@ Enable XNACK (AMDGPU only)
24302430

24312431
ARM
24322432
---
2433+
2434+
.. option:: -ffixed-r6
2435+
2436+
Reserve the r6 register (ARM only)
2437+
2438+
.. option:: -ffixed-r7
2439+
2440+
Reserve the r7 register (ARM only)
2441+
2442+
.. option:: -ffixed-r8
2443+
2444+
Reserve the r8 register (ARM only)
2445+
24332446
.. option:: -ffixed-r9
24342447

24352448
Reserve the r9 register (ARM only)
24362449

2450+
.. option:: -ffixed-r10
2451+
2452+
Reserve the r10 register (ARM only)
2453+
2454+
.. option:: -ffixed-r11
2455+
2456+
Reserve the r11 register (ARM only)
2457+
24372458
.. option:: -mexecute-only, -mno-execute-only, -mpure-code
24382459

24392460
Disallow generation of data access to code sections (ARM only)

clang/docs/ClangFormatStyleOptions.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,6 +1432,10 @@ the configuration (without a prefix: ``Auto``).
14321432
f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]);
14331433
new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 };
14341434

1435+
**DeriveLineEnding** (``bool``)
1436+
Analyze the formatted file for the most used line ending (``\r\n``
1437+
or ``\n``). ``UseCRLF`` is only used as a fallback if none can be derived.
1438+
14351439
**DerivePointerAlignment** (``bool``)
14361440
If ``true``, analyze the formatted file for the most common
14371441
alignment of ``&`` and ``*``.
@@ -2257,6 +2261,16 @@ the configuration (without a prefix: ``Auto``).
22572261
true: false:
22582262
for (auto v : values) {} vs. for(auto v: values) {}
22592263

2264+
**SpaceBeforeSquareBrackets** (``bool``)
2265+
If ``true``, spaces will be before ``[``.
2266+
Lambdas will not be affected. Only the first ``[`` will get a space added.
2267+
2268+
.. code-block:: c++
2269+
2270+
true: false:
2271+
int a [5]; vs. int a[5];
2272+
int a [5][5]; vs. int a[5][5];
2273+
22602274
**SpaceInEmptyBlock** (``bool``)
22612275
If ``true``, spaces will be inserted into ``{}``.
22622276

@@ -2409,6 +2423,10 @@ the configuration (without a prefix: ``Auto``).
24092423
24102424
For example: OpenSSL STACK_OF, BSD LIST_ENTRY.
24112425

2426+
**UseCRLF** (``bool``)
2427+
Use ``\r\n`` instead of ``\n`` for line breaks.
2428+
Also used as fallback if ``DeriveLineEnding`` is true.
2429+
24122430
**UseTab** (``UseTabStyle``)
24132431
The way to use tab characters in the resulting file.
24142432

clang/include/clang/Basic/DiagnosticDriverKinds.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,10 @@ def warn_drv_msp430_hwmult_no_device : Warning<"no MCU device specified, but "
477477
"specify a MSP430 device, or -mhwmult to set hardware multiply type "
478478
"explicitly.">, InGroup<InvalidCommandLineArgument>;
479479

480+
// Frame pointer reservation.
481+
def err_reserved_frame_pointer : Error<
482+
"'%0' has been specified but '%1' is used as the frame pointer for this target">;
483+
480484
def warn_drv_libstdcxx_not_found : Warning<
481485
"include path for libstdc++ headers not found; pass '-stdlib=libc++' on the "
482486
"command line to use the libc++ standard library instead">,

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,3 +1120,6 @@ def CTADMaybeUnsupported : DiagGroup<"ctad-maybe-unsupported">;
11201120
def FortifySource : DiagGroup<"fortify-source">;
11211121

11221122
def IntelFPGA : DiagGroup<"intel-fpga">;
1123+
1124+
// Register reservation.
1125+
def FixedRegs : DiagGroup<"fixed-registers">;

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7744,6 +7744,8 @@ let CategoryName = "Inline Assembly Issue" in {
77447744
def err_asm_unknown_register_name : Error<"unknown register name '%0' in asm">;
77457745
def err_asm_invalid_global_var_reg : Error<"register '%0' unsuitable for "
77467746
"global register variables on this target">;
7747+
def err_asm_missing_fixed_reg_opt : Error<"-ffixed-%0 is required for "
7748+
"global named register variable declaration">;
77477749
def err_asm_register_size_mismatch : Error<"size of register '%0' does not "
77487750
"match variable size">;
77497751
def err_asm_bad_register_type : Error<"bad type for named register variable">;

clang/include/clang/Basic/TargetInfo.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,12 @@ class TargetInfo : public virtual TransferrableTargetInfo,
938938
return true;
939939
}
940940

941+
/// Check if the register is reserved globally
942+
///
943+
/// This function returns true if the register passed in RegName is reserved
944+
/// using the corresponding -ffixed-RegName option.
945+
virtual bool isRegisterReservedGlobally(StringRef) const { return true; }
946+
941947
// validateOutputConstraint, validateInputConstraint - Checks that
942948
// a constraint is valid and provides information about it.
943949
// FIXME: These should return a real error instead of just true/false.

clang/include/clang/Driver/Distro.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class Distro {
6565
UbuntuCosmic,
6666
UbuntuDisco,
6767
UbuntuEoan,
68+
UbuntuFocal,
6869
UnknownDistro
6970
};
7071

@@ -118,7 +119,7 @@ class Distro {
118119
}
119120

120121
bool IsUbuntu() const {
121-
return DistroVal >= UbuntuHardy && DistroVal <= UbuntuEoan;
122+
return DistroVal >= UbuntuHardy && DistroVal <= UbuntuFocal;
122123
}
123124

124125
bool IsAlpineLinux() const {

clang/include/clang/Driver/Options.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2316,8 +2316,9 @@ def mrestrict_it: Flag<["-"], "mrestrict-it">, Group<m_arm_Features_Group>,
23162316
def mno_restrict_it: Flag<["-"], "mno-restrict-it">, Group<m_arm_Features_Group>,
23172317
HelpText<"Allow generation of deprecated IT blocks for ARMv8. It is off by default for ARMv8 Thumb mode">;
23182318
def marm : Flag<["-"], "marm">, Alias<mno_thumb>;
2319-
def ffixed_r9 : Flag<["-"], "ffixed-r9">, Group<m_arm_Features_Group>,
2320-
HelpText<"Reserve the r9 register (ARM only)">;
2319+
foreach i = {6-11} in
2320+
def ffixed_r#i : Flag<["-"], "ffixed-r"#i>, Group<m_arm_Features_Group>,
2321+
HelpText<"Reserve the r"#i#" register (ARM only)">;
23212322
def mno_movt : Flag<["-"], "mno-movt">, Group<m_arm_Features_Group>,
23222323
HelpText<"Disallow use of movt/movw pairs (ARM only)">;
23232324
def mcrc : Flag<["-"], "mcrc">, Group<m_Group>,

clang/include/clang/Format/Format.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1986,6 +1986,15 @@ struct FormatStyle {
19861986
/// \endcode
19871987
bool SpacesInSquareBrackets;
19881988

1989+
/// If ``true``, spaces will be before ``[``.
1990+
/// Lambdas will not be affected. Only the first ``[`` will get a space added.
1991+
/// \code
1992+
/// true: false:
1993+
/// int a [5]; vs. int a[5];
1994+
/// int a [5][5]; vs. int a[5][5];
1995+
/// \endcode
1996+
bool SpaceBeforeSquareBrackets;
1997+
19891998
/// Supported language standards for parsing and formatting C++ constructs.
19901999
/// \code
19912000
/// Latest: vector<set<int>>
@@ -2150,10 +2159,10 @@ struct FormatStyle {
21502159
SpacesInCStyleCastParentheses == R.SpacesInCStyleCastParentheses &&
21512160
SpacesInParentheses == R.SpacesInParentheses &&
21522161
SpacesInSquareBrackets == R.SpacesInSquareBrackets &&
2162+
SpaceBeforeSquareBrackets == R.SpaceBeforeSquareBrackets &&
21532163
Standard == R.Standard && TabWidth == R.TabWidth &&
21542164
StatementMacros == R.StatementMacros && UseTab == R.UseTab &&
2155-
UseCRLF == R.UseCRLF &&
2156-
TypenameMacros == R.TypenameMacros;
2165+
UseCRLF == R.UseCRLF && TypenameMacros == R.TypenameMacros;
21572166
}
21582167

21592168
llvm::Optional<FormatStyle> GetLanguageStyle(LanguageKind Language) const;

clang/include/clang/Tooling/Refactoring/Extract/SourceExtraction.h

100755100644
File mode changed.

clang/lib/Basic/Targets/ARM.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -879,6 +879,38 @@ ArrayRef<TargetInfo::GCCRegAlias> ARMTargetInfo::getGCCRegAliases() const {
879879
return llvm::makeArrayRef(GCCRegAliases);
880880
}
881881

882+
bool ARMTargetInfo::validateGlobalRegisterVariable(
883+
StringRef RegName, unsigned RegSize, bool &HasSizeMismatch) const {
884+
bool isValid = llvm::StringSwitch<bool>(RegName)
885+
.Case("r6", true)
886+
.Case("r7", true)
887+
.Case("r8", true)
888+
.Case("r9", true)
889+
.Case("r10", true)
890+
.Case("r11", true)
891+
.Case("sp", true)
892+
.Default(false);
893+
HasSizeMismatch = false;
894+
return isValid;
895+
}
896+
897+
bool ARMTargetInfo::isRegisterReservedGlobally(StringRef RegName) const {
898+
// The "sp" register does not have a -ffixed-sp option,
899+
// so reserve it unconditionally.
900+
if (RegName.equals("sp"))
901+
return true;
902+
903+
// reserve rN (N:6-11) registers only if the corresponding
904+
// +reserve-rN feature is found
905+
const std::vector<std::string> &Features = getTargetOpts().Features;
906+
const std::string SearchFeature = "+reserve-" + RegName.str();
907+
for (const std::string &Feature : Features) {
908+
if (Feature.compare(SearchFeature) == 0)
909+
return true;
910+
}
911+
return false;
912+
}
913+
882914
bool ARMTargetInfo::validateAsmConstraint(
883915
const char *&Name, TargetInfo::ConstraintInfo &Info) const {
884916
switch (*Name) {

clang/lib/Basic/Targets/ARM.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ class LLVM_LIBRARY_VISIBILITY ARMTargetInfo : public TargetInfo {
161161

162162
ArrayRef<const char *> getGCCRegNames() const override;
163163
ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override;
164+
bool validateGlobalRegisterVariable(StringRef RegName, unsigned RegSize,
165+
bool &HasSizeMismatch) const override;
166+
bool isRegisterReservedGlobally(StringRef RegName) const override;
164167
bool validateAsmConstraint(const char *&Name,
165168
TargetInfo::ConstraintInfo &Info) const override;
166169
std::string convertConstraint(const char *&Constraint) const override;

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,8 @@ llvm::DIType *CGDebugInfo::CreateType(const TemplateSpecializationType *Ty,
11271127
SourceLocation Loc = AliasDecl->getLocation();
11281128
return DBuilder.createTypedef(Src, OS.str(), getOrCreateFile(Loc),
11291129
getLineNumber(Loc),
1130-
getDeclContextDescriptor(AliasDecl));
1130+
getDeclContextDescriptor(AliasDecl),
1131+
/* Alignment */ None);
11311132
}
11321133

11331134
llvm::DIType *CGDebugInfo::CreateType(const TypedefType *Ty,
@@ -1143,9 +1144,10 @@ llvm::DIType *CGDebugInfo::CreateType(const TypedefType *Ty,
11431144
SourceLocation Loc = Ty->getDecl()->getLocation();
11441145

11451146
// Typedefs are derived from some other type.
1146-
return DBuilder.createTypedef(Underlying, Ty->getDecl()->getName(),
1147-
getOrCreateFile(Loc), getLineNumber(Loc),
1148-
getDeclContextDescriptor(Ty->getDecl()));
1147+
return DBuilder.createTypedef(
1148+
Underlying, Ty->getDecl()->getName(), getOrCreateFile(Loc),
1149+
getLineNumber(Loc), getDeclContextDescriptor(Ty->getDecl()),
1150+
getDeclAlignIfRequired(Ty->getDecl(), CGM.getContext()));
11491151
}
11501152

11511153
static unsigned getDwarfCC(CallingConv CC) {
@@ -2324,7 +2326,8 @@ llvm::DIType *CGDebugInfo::CreateType(const ObjCTypeParamType *Ty,
23242326
return DBuilder.createTypedef(
23252327
getOrCreateType(Ty->getDecl()->getUnderlyingType(), Unit),
23262328
Ty->getDecl()->getName(), getOrCreateFile(Loc), getLineNumber(Loc),
2327-
getDeclContextDescriptor(Ty->getDecl()));
2329+
getDeclContextDescriptor(Ty->getDecl()),
2330+
/* Alignment */ None);
23282331
}
23292332

23302333
/// \return true if Getter has the default name for the property PD.

clang/lib/Driver/Distro.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) {
5252
.Case("cosmic", Distro::UbuntuCosmic)
5353
.Case("disco", Distro::UbuntuDisco)
5454
.Case("eoan", Distro::UbuntuEoan)
55+
.Case("focal", Distro::UbuntuFocal)
5556
.Default(Distro::UnknownDistro);
5657
if (Version != Distro::UnknownDistro)
5758
return Version;

clang/lib/Driver/ToolChains/Arch/ARM.cpp

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,39 @@ void arm::getARMTargetFeatures(const ToolChain &TC,
592592
Features.push_back("+strict-align");
593593
}
594594

595-
// llvm does not support reserving registers in general. There is support
596-
// for reserving r9 on ARM though (defined as a platform-specific register
597-
// in ARM EABI).
598-
if (Args.hasArg(options::OPT_ffixed_r9))
599-
Features.push_back("+reserve-r9");
595+
// Do not allow r9 reservation with -frwpi.
596+
if (Args.hasArg(options::OPT_ffixed_r9) && Args.hasArg(options::OPT_frwpi)) {
597+
Arg *A = Args.getLastArg(options::OPT_ffixed_r9);
598+
Arg *B = Args.getLastArg(options::OPT_frwpi);
599+
D.Diag(diag::err_opt_not_valid_with_opt)
600+
<< A->getAsString(Args) << B->getAsString(Args);
601+
}
602+
603+
// The compiler can still use a FP in certain circumstances,
604+
// even when frame pointer elimination is enabled. Thus we should
605+
// not allow to reserve a target's FP register.
606+
const llvm::opt::OptSpecifier RestrictFPOpt =
607+
(Triple.isOSDarwin() || (!Triple.isOSWindows() && Triple.isThumb()))
608+
? options::OPT_ffixed_r7
609+
: options::OPT_ffixed_r11;
610+
if (Args.hasArg(RestrictFPOpt)) {
611+
const std::string OptStr =
612+
Args.getLastArg(RestrictFPOpt)->getAsString(Args);
613+
const unsigned int SubStrIndex = strlen("ffixed-r");
614+
D.Diag(diag::err_reserved_frame_pointer)
615+
<< OptStr << OptStr.substr(SubStrIndex);
616+
}
617+
618+
// Reservation of general purpose registers.
619+
#define HANDLE_FFIXED_R(n) \
620+
if (Args.hasArg(options::OPT_ffixed_r##n)) \
621+
Features.push_back("+reserve-r" #n)
622+
HANDLE_FFIXED_R(6);
623+
HANDLE_FFIXED_R(7);
624+
HANDLE_FFIXED_R(8);
625+
HANDLE_FFIXED_R(9);
626+
HANDLE_FFIXED_R(10);
627+
HANDLE_FFIXED_R(11);
600628

601629
// The kext linker doesn't know how to deal with movw/movt.
602630
if (KernelOrKext || Args.hasArg(options::OPT_mno_movt))

clang/lib/Format/Format.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,8 @@ template <> struct MappingTraits<FormatStyle> {
543543
Style.SpacesInCStyleCastParentheses);
544544
IO.mapOptional("SpacesInParentheses", Style.SpacesInParentheses);
545545
IO.mapOptional("SpacesInSquareBrackets", Style.SpacesInSquareBrackets);
546+
IO.mapOptional("SpaceBeforeSquareBrackets",
547+
Style.SpaceBeforeSquareBrackets);
546548
IO.mapOptional("Standard", Style.Standard);
547549
IO.mapOptional("StatementMacros", Style.StatementMacros);
548550
IO.mapOptional("TabWidth", Style.TabWidth);
@@ -813,6 +815,7 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {
813815
LLVMStyle.SpaceBeforeRangeBasedForLoopColon = true;
814816
LLVMStyle.SpaceBeforeAssignmentOperators = true;
815817
LLVMStyle.SpaceBeforeCpp11BracedList = false;
818+
LLVMStyle.SpaceBeforeSquareBrackets = false;
816819
LLVMStyle.SpacesInAngles = false;
817820

818821
LLVMStyle.PenaltyBreakAssignment = prec::Assignment;
@@ -1354,10 +1357,11 @@ class Formatter : public TokenAnalyzer {
13541357

13551358
WhitespaceManager Whitespaces(
13561359
Env.getSourceManager(), Style,
1357-
Style.DeriveLineEnding ?
1358-
inputUsesCRLF(Env.getSourceManager().getBufferData(Env.getFileID()),
1359-
Style.UseCRLF) :
1360-
Style.UseCRLF);
1360+
Style.DeriveLineEnding
1361+
? inputUsesCRLF(
1362+
Env.getSourceManager().getBufferData(Env.getFileID()),
1363+
Style.UseCRLF)
1364+
: Style.UseCRLF);
13611365
ContinuationIndenter Indenter(Style, Tokens.getKeywords(),
13621366
Env.getSourceManager(), Whitespaces, Encoding,
13631367
BinPackInconclusiveFunctions);

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,7 +2694,7 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
26942694
// Space between the type and the *
26952695
// operator void*(), operator char*(), operator Foo*() dependant
26962696
// on PointerAlignment style.
2697-
return (Style.PointerAlignment == FormatStyle::PAS_Right);
2697+
return (Style.PointerAlignment != FormatStyle::PAS_Left);
26982698
const auto SpaceRequiredForArrayInitializerLSquare =
26992699
[](const FormatToken &LSquareTok, const FormatStyle &Style) {
27002700
return Style.SpacesInContainerLiterals ||
@@ -2724,7 +2724,9 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
27242724
!Right.isOneOf(TT_ObjCMethodExpr, TT_LambdaLSquare,
27252725
TT_DesignatedInitializerLSquare,
27262726
TT_StructuredBindingLSquare, TT_AttributeSquare) &&
2727-
!Left.isOneOf(tok::numeric_constant, TT_DictLiteral))
2727+
!Left.isOneOf(tok::numeric_constant, TT_DictLiteral) &&
2728+
!(!Left.is(tok::r_square) && Style.SpaceBeforeSquareBrackets &&
2729+
Right.is(TT_ArraySubscriptLSquare)))
27282730
return false;
27292731
if (Left.is(tok::l_brace) && Right.is(tok::r_brace))
27302732
return !Left.Children.empty(); // No spaces in "{}".

clang/lib/Sema/SemaDecl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7017,6 +7017,8 @@ NamedDecl *Sema::ActOnVariableDeclarator(
70177017
Diag(E->getExprLoc(), diag::err_asm_invalid_global_var_reg) << Label;
70187018
else if (HasSizeMismatch)
70197019
Diag(E->getExprLoc(), diag::err_asm_register_size_mismatch) << Label;
7020+
else if (!TI.isRegisterReservedGlobally(Label))
7021+
Diag(E->getExprLoc(), diag::err_asm_missing_fixed_reg_opt) << Label;
70207022
}
70217023

70227024
if (!R->isIntegralType(Context) && !R->isPointerType()) {

clang/lib/StaticAnalyzer/Checkers/Yaml.h

100755100644
File mode changed.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Test for debug info related to DW_AT_alignment attribute in the typedef operator
2+
// Supported: -O0, standalone DI
3+
// RUN: %clang_cc1 -dwarf-version=5 -emit-llvm -triple x86_64-linux-gnu %s -o - \
4+
// RUN: -O0 -disable-llvm-passes \
5+
// RUN: -debug-info-kind=standalone \
6+
// RUN: | FileCheck %s
7+
8+
// CHECK: DIDerivedType(tag: DW_TAG_typedef, {{.*}}, align: 512
9+
10+
typedef char __attribute__((__aligned__(64))) alchar;
11+
12+
int main() {
13+
alchar newChar;
14+
}

0 commit comments

Comments
 (0)