Skip to content

Commit f34f6bd

Browse files
SC llvm teamdstutt
SC llvm team
authored andcommitted
Merged main:8474bfdd149b into amd-gfx:24c3950d1abc
Local branch amd-gfx 24c3950 Manually merged main:6a91b7051df7 into amd-gfx:cbe644758d17 Remote branch main 8474bfd [NFC] [docs] Clarify we are talking about a function
2 parents 24c3950 + 8474bfd commit f34f6bd

File tree

450 files changed

+22218
-2633
lines changed

Some content is hidden

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

450 files changed

+22218
-2633
lines changed

bolt/docs/doxygen.cfg.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1954,7 +1954,7 @@ PREDEFINED =
19541954
EXPAND_AS_DEFINED =
19551955

19561956
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
1957-
# remove all refrences to function-like macros that are alone on a line, have an
1957+
# remove all references to function-like macros that are alone on a line, have an
19581958
# all uppercase name, and do not end with a semicolon. Such function macros are
19591959
# typically used for boiler-plate code, and will confuse the parser if not
19601960
# removed.

bolt/include/bolt/Core/BinaryContext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,7 @@ class BinaryContext {
950950
bool registerFragment(BinaryFunction &TargetFunction,
951951
BinaryFunction &Function) const;
952952

953-
/// Add unterprocedural reference for \p Function to \p Address
953+
/// Add interprocedural reference for \p Function to \p Address
954954
void addInterproceduralReference(BinaryFunction *Function, uint64_t Address) {
955955
InterproceduralReferences.push_back({Function, Address});
956956
}

bolt/include/bolt/Core/BinaryFunction.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,8 @@ class BinaryFunction {
14451445

14461446
/// Rebuilds BBs layout, ignoring dead BBs. Returns the number of removed
14471447
/// BBs and the removed number of bytes of code.
1448-
std::pair<unsigned, uint64_t> eraseInvalidBBs();
1448+
std::pair<unsigned, uint64_t>
1449+
eraseInvalidBBs(const MCCodeEmitter *Emitter = nullptr);
14491450

14501451
/// Get the relative order between two basic blocks in the original
14511452
/// layout. The result is > 0 if B occurs before A and < 0 if B
@@ -2172,7 +2173,7 @@ class BinaryFunction {
21722173
/// is corrupted. If it is unable to fix it, it returns false.
21732174
bool finalizeCFIState();
21742175

2175-
/// Return true if this function needs an address-transaltion table after
2176+
/// Return true if this function needs an address-translation table after
21762177
/// its code emission.
21772178
bool requiresAddressTranslation() const;
21782179

bolt/include/bolt/Core/BinarySection.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class BinarySection {
127127
return *ContentsOrErr;
128128
}
129129

130-
/// Get the set of relocations refering to data in this section that
130+
/// Get the set of relocations referring to data in this section that
131131
/// has been reordered. The relocation offsets will be modified to
132132
/// reflect the new data locations.
133133
RelocationSetType reorderRelocations(bool Inplace) const;

bolt/include/bolt/Core/DebugData.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ std::optional<AttrInfo> findAttributeInfo(const DWARFDie DIE,
6464
dwarf::Attribute Attr);
6565

6666
// DWARF5 Header in order of encoding.
67-
// Types represent encodnig sizes.
67+
// Types represent encoding sizes.
6868
using UnitLengthType = uint32_t;
6969
using VersionType = uint16_t;
7070
using AddressSizeType = uint8_t;
@@ -372,13 +372,13 @@ class DebugAddrWriter {
372372
}
373373

374374
/// Updates AddressToIndex Map.
375-
/// Follows the same symantics as unordered map [].
375+
/// Follows the same semantics as unordered map [].
376376
void updateAddressToIndex(uint64_t Address, uint32_t Index) {
377377
AddressToIndex[Address] = Index;
378378
}
379379

380380
/// Updates IndexToAddress Map.
381-
/// Follows the same symantics as unordered map [].
381+
/// Follows the same semantics as unordered map [].
382382
void updateIndexToAddrss(uint64_t Address, uint32_t Index) {
383383
IndexToAddress[Index] = Address;
384384
}
@@ -474,7 +474,7 @@ class DebugStrWriter {
474474
}
475475

476476
/// Adds string to .debug_str.
477-
/// On first invokation it initializes internal data stractures.
477+
/// On first invocation it initializes internal data structures.
478478
uint32_t addString(StringRef Str);
479479

480480
/// Returns False if no strings were added to .debug_str.
@@ -485,7 +485,7 @@ class DebugStrWriter {
485485
std::mutex WriterMutex;
486486
/// Initializes Buffer and Stream.
487487
void initialize();
488-
/// Creats internal data stractures.
488+
/// Creates internal data structures.
489489
void create();
490490
std::unique_ptr<DebugStrBufferVector> StrBuffer;
491491
std::unique_ptr<raw_svector_ostream> StrStream;
@@ -585,7 +585,7 @@ class DebugLoclistWriter : public DebugLocWriter {
585585
void finalize(DIEBuilder &DIEBldr, DIE &Die) override;
586586

587587
/// Returns CU ID.
588-
/// For Skelton CU it is a CU Offset.
588+
/// For Skeleton CU it is a CU Offset.
589589
/// For DWO CU it is a DWO ID.
590590
uint64_t getCUID() const {
591591
return CU.isDWOUnit() ? *CU.getDWOId() : CU.getOffset();

bolt/include/bolt/Core/DynoStats.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class DynoStats {
121121
/// Maps instruction opcodes to:
122122
/// 1. Accumulated executed instruction counts.
123123
/// 2. a multimap that records highest execution counts, function names,
124-
/// and BB offsets where intructions of these opcodes occur.
124+
/// and BB offsets where instructions of these opcodes occur.
125125
using MaxOpcodeHistogramTy =
126126
std::multimap<uint64_t, std::pair<StringRef, uint32_t>>;
127127
using OpcodeHistogramTy =

bolt/include/bolt/Core/Exceptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class EHFrameParser {
7777
/// void PatcherCallback(uint64_t Value, uint64_t Offset, uint64_t Type);
7878
///
7979
/// where Value is a value of the reference, Offset - is an offset into the
80-
/// frame data at which the reference occured, and Type is a DWARF encoding
80+
/// frame data at which the reference occurred, and Type is a DWARF encoding
8181
/// type of the reference.
8282
static Error parse(DWARFDataExtractor Data, uint64_t EHFrameAddress,
8383
PatcherCallbackTy PatcherCallback);

bolt/include/bolt/Core/MCPlusBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ class MCPlusBuilder {
10821082

10831083
/// Replace the compound memory operand of Inst with an immediate operand.
10841084
/// The value of the immediate operand is computed by reading the \p
1085-
/// ConstantData array starting from \p offset and assuming little-endianess.
1085+
/// ConstantData array starting from \p offset and assuming little-endianness.
10861086
/// Return true on success. The given instruction is modified in place.
10871087
virtual bool replaceMemOperandWithImm(MCInst &Inst, StringRef ConstantData,
10881088
uint64_t Offset) const {

bolt/include/bolt/Core/Relocation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ struct Relocation {
6161

6262
/// Handle special cases when relocation should not be processed by BOLT or
6363
/// change relocation \p Type to proper one before continuing if \p Contents
64-
/// and \P Type mismatch occured.
64+
/// and \P Type mismatch occurred.
6565
static bool skipRelocationProcess(uint64_t &Type, uint64_t Contents);
6666

6767
// Adjust value depending on relocation type (make it PC relative or not)

bolt/include/bolt/Passes/FixRelaxationPass.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88
//
99
// This file declares the FixRelaxations class, which locates instructions with
10-
// wrong targets and fixes them. Such problems usually occures when linker
10+
// wrong targets and fixes them. Such problems usually occurs when linker
1111
// relaxes (changes) instructions, but doesn't fix relocations types properly
1212
// for them.
1313
//

bolt/include/bolt/Passes/InstrumentationSummary.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class BinaryFunction;
3535
// counters. It also provides function names and offsets used when writing the
3636
// fdata file.
3737

38-
// Location information -- analoguous to the concept of the same name in fdata
38+
// Location information -- analogous to the concept of the same name in fdata
3939
// writing/reading. The difference is that the name is stored as an index to a
4040
// string table written separately.
4141
struct LocDescription {

bolt/include/bolt/Passes/ReorderAlgorithm.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class ClusterAlgorithm {
4242
virtual void clusterBasicBlocks(BinaryFunction &BF,
4343
bool ComputeEdges = false) = 0;
4444

45-
/// Compute for each cluster its averagae execution frequency, that is
45+
/// Compute for each cluster its average execution frequency, that is
4646
/// the sum of average frequencies of its blocks (execution count / # instrs).
4747
/// The average frequencies are stored in the AvgFreq vector, index by the
4848
/// cluster indices in the Clusters vector.
@@ -128,7 +128,7 @@ class MinBranchGreedyClusterAlgorithm : public GreedyClusterAlgorithm {
128128
// A -> B with execution count 500,
129129
// A -> C with execution count 100, and
130130
// D -> B with execution count 150
131-
// wher B, C are the only successors of A and A, D are thr only predessecors
131+
// where B, C are the only successors of A and A, D are the only predecessors
132132
// of B. Then if we choose to layout edge A -> B as a fallthrough, the win in
133133
// branches would be 500 - 100 - 150 = 250. That is the weight of edge A->B.
134134
int64_t calculateWeight(const EdgeTy &E, const BinaryFunction &BF) const;
@@ -144,8 +144,8 @@ class MinBranchGreedyClusterAlgorithm : public GreedyClusterAlgorithm {
144144
void reset() override;
145145
};
146146

147-
/// Objects of this class implement various basic block reordering alogrithms.
148-
/// Most of these algorithms depend on a clustering alogrithm.
147+
/// Objects of this class implement various basic block reordering algorithms.
148+
/// Most of these algorithms depend on a clustering algorithm.
149149
/// Here we have 3 conflicting goals as to how to layout clusters. If we want
150150
/// to minimize jump offsets, we should put clusters with heavy inter-cluster
151151
/// dependence as close as possible. If we want to maximize the probability

bolt/include/bolt/Passes/StackReachingUses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class StackReachingUses
4141
/// Answer whether the stack position written by the store represented in
4242
/// \p StoreFIE is loaded from or consumed in any way. The set of all
4343
/// relevant expressions reaching this store should be in \p Candidates.
44-
/// If \p IncludelocalAccesses is false, we only consider wheter there is
44+
/// If \p IncludelocalAccesses is false, we only consider whether there is
4545
/// a callee that consumes this stack position.
4646
bool isStoreUsed(const FrameIndexEntry &StoreFIE, ExprIterator Candidates,
4747
bool IncludeLocalAccesses = true) const;

bolt/include/bolt/Passes/StokeInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// Pass to get information for functions for the Stoke Optimization
1010
// To use the Stoke optimization technique to optimize the HHVM.
1111
// This Pass solves the two major problems to use the Stoke program without
12-
// proting its code:
12+
// probing its code:
1313
//
1414
// 1. Stoke works on function level, but it is only limited to relative
1515
// small functions which are loop-free, call-free, exception-free, etc.

bolt/include/bolt/Passes/TailDuplication.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class TailDuplication : public BinaryFunctionPass {
8181
/// Returns true if Reg is used by Inst
8282
bool regIsUsed(const MCInst &Inst, unsigned Reg, BinaryContext &BC) const;
8383

84-
/// Returns true if Reg is overwritten before its used by StartBB's sucessors
84+
/// Returns true if Reg is overwritten before its used by StartBB's successors
8585
bool isOverwrittenBeforeUsed(BinaryBasicBlock &StartBB, unsigned Reg) const;
8686

8787
/// Constant and Copy Propagate for the block formed by OriginalBB and

bolt/include/bolt/Profile/DataAggregator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ class DataAggregator : public DataReader {
301301
ErrorOr<AggregatedLBREntry> parseAggregatedLBREntry();
302302

303303
/// Parse either buildid:offset or just offset, representing a location in the
304-
/// binary. Used exclusevely for pre-aggregated LBR samples.
304+
/// binary. Used exclusively for pre-aggregated LBR samples.
305305
ErrorOr<Location> parseLocationOrOffset();
306306

307307
/// Check if a field separator is the next char to parse and, if yes, consume

bolt/include/bolt/Profile/DataReader.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,9 @@ class DataReader : public ProfileReaderBase {
350350
///
351351
/// The examples records branches from local symbol func (from t2.c), offset
352352
/// 11, to global symbol globalfunc, offset 1d, with 1775 branches, no
353-
/// mispreds. Of these branches, 1002 were preceeded by a sequence of
353+
/// mispreds. Of these branches, 1002 were preceded by a sequence of
354354
/// branches from func, offset 18 to offset 20 and then from offset 31 to
355-
/// offset d. The rest 773 branches were preceeded by a different sequence
355+
/// offset d. The rest 773 branches were preceded by a different sequence
356356
/// of branches, from func, offset 18 to offset 60 and then from offset 71 to
357357
/// offset d.
358358
std::error_code parse();

bolt/include/bolt/Rewrite/RewriteInstance.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ class RewriteInstance {
430430

431431
/// Common section names.
432432
static StringRef getEHFrameSectionName() { return ".eh_frame"; }
433+
static StringRef getRelaDynSectionName() { return ".rela.dyn"; }
433434

434435
/// An instance of the input binary we are processing, externally owned.
435436
llvm::object::ELFObjectFileBase *InputFile;

bolt/lib/Core/BinaryContext.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ void BinaryContext::foldFunction(BinaryFunction &ChildBF,
14021402
}
14031403

14041404
void BinaryContext::fixBinaryDataHoles() {
1405-
assert(validateObjectNesting() && "object nesting inconsitency detected");
1405+
assert(validateObjectNesting() && "object nesting inconsistency detected");
14061406

14071407
for (BinarySection &Section : allocatableSections()) {
14081408
std::vector<std::pair<uint64_t, uint64_t>> Holes;
@@ -1451,7 +1451,7 @@ void BinaryContext::fixBinaryDataHoles() {
14511451
}
14521452
}
14531453

1454-
assert(validateObjectNesting() && "object nesting inconsitency detected");
1454+
assert(validateObjectNesting() && "object nesting inconsistency detected");
14551455
assert(validateHoles() && "top level hole detected in object map");
14561456
}
14571457

@@ -1796,7 +1796,7 @@ void BinaryContext::printCFI(raw_ostream &OS, const MCCFIInstruction &Inst) {
17961796
MarkerSymType BinaryContext::getMarkerType(const SymbolRef &Symbol) const {
17971797
// For aarch64 and riscv, the ABI defines mapping symbols so we identify data
17981798
// in the code section (see IHI0056B). $x identifies a symbol starting code or
1799-
// the end of a data chunk inside code, $d indentifies start of data.
1799+
// the end of a data chunk inside code, $d identifies start of data.
18001800
if ((!isAArch64() && !isRISCV()) || ELFSymbolRef(Symbol).getSize())
18011801
return MarkerSymType::NONE;
18021802

bolt/lib/Core/BinaryFunction.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,8 @@ void BinaryFunction::markUnreachableBlocks() {
322322

323323
// Any unnecessary fallthrough jumps revealed after calling eraseInvalidBBs
324324
// will be cleaned up by fixBranches().
325-
std::pair<unsigned, uint64_t> BinaryFunction::eraseInvalidBBs() {
325+
std::pair<unsigned, uint64_t>
326+
BinaryFunction::eraseInvalidBBs(const MCCodeEmitter *Emitter) {
326327
DenseSet<const BinaryBasicBlock *> InvalidBBs;
327328
unsigned Count = 0;
328329
uint64_t Bytes = 0;
@@ -331,7 +332,7 @@ std::pair<unsigned, uint64_t> BinaryFunction::eraseInvalidBBs() {
331332
assert(!isEntryPoint(*BB) && "all entry blocks must be valid");
332333
InvalidBBs.insert(BB);
333334
++Count;
334-
Bytes += BC.computeCodeSize(BB->begin(), BB->end());
335+
Bytes += BC.computeCodeSize(BB->begin(), BB->end(), Emitter);
335336
}
336337
}
337338

@@ -4306,7 +4307,7 @@ BinaryFunction::translateInputToOutputRange(DebugAddressRange InRange) const {
43064307
// block boundaries.
43074308
auto translateBlockOffset = [&](const uint64_t Offset) {
43084309
const uint64_t OutAddress = BB.getOutputAddressRange().first + Offset;
4309-
return OutAddress;
4310+
return std::min(OutAddress, BB.getOutputAddressRange().second);
43104311
};
43114312

43124313
uint64_t OutLowPC = BB.getOutputAddressRange().first;

bolt/lib/Core/BinarySection.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ void BinarySection::print(raw_ostream &OS) const {
227227
BinarySection::RelocationSetType
228228
BinarySection::reorderRelocations(bool Inplace) const {
229229
assert(PendingRelocations.empty() &&
230-
"reodering pending relocations not supported");
230+
"reordering pending relocations not supported");
231231
RelocationSetType NewRelocations;
232232
for (const Relocation &Rel : relocations()) {
233233
uint64_t RelAddr = Rel.Offset + getAddress();

bolt/lib/Core/DebugData.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ uint64_t DebugRangeListsSectionWriter::addRanges(
188188
}
189189

190190
struct LocListsRangelistsHeader {
191-
UnitLengthType UnitLength; // Size of loclist entris section, not including
191+
UnitLengthType UnitLength; // Size of loclist entries section, not including
192192
// size of header.
193193
VersionType Version;
194194
AddressSizeType AddressSize;
@@ -449,8 +449,8 @@ static void updateAddressBase(DIEBuilder &DIEBlder, DebugAddrWriter &AddrWriter,
449449
}
450450

451451
void DebugAddrWriter::update(DIEBuilder &DIEBlder, DWARFUnit &CU) {
452-
// Handling the case wehre debug information is a mix of Debug fission and
453-
// monolitic.
452+
// Handling the case where debug information is a mix of Debug fission and
453+
// monolithic.
454454
if (!CU.getDWOId())
455455
return;
456456
const uint64_t CUID = getCUID(CU);

bolt/lib/Core/DynoStats.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void DynoStats::operator+=(const DynoStats &Other) {
136136
if (I == OpcodeHistogram.end()) {
137137
OpcodeHistogram.emplace(Stat);
138138
} else {
139-
// Merge Other Historgrams, log only the opts::PrintDynoOpcodeStat'th
139+
// Merge other histograms, log only the opts::PrintDynoOpcodeStat'th
140140
// maximum counts.
141141
I->second.first += Stat.second.first;
142142
auto &MMap = I->second.second;

bolt/lib/Core/Relocation.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ static bool skipRelocationProcessAArch64(uint64_t &Type, uint64_t Contents) {
295295
// changed TLS access model (e.g. changed global dynamic model
296296
// to initial exec), thus changing the instructions. The static
297297
// relocations might be invalid at this point and we might no
298-
// need to proccess these relocations anymore.
298+
// need to process these relocations anymore.
299299
// More information could be found by searching
300300
// elfNN_aarch64_tls_relax in bfd
301301
switch (Type) {
@@ -503,7 +503,7 @@ static uint64_t extractValueAArch64(uint64_t Type, uint64_t Contents,
503503
case ELF::R_AARCH64_MOVW_UABS_G1:
504504
case ELF::R_AARCH64_MOVW_UABS_G0_NC:
505505
case ELF::R_AARCH64_MOVW_UABS_G0:
506-
// The shift goest in bits 22:21 of MOV* instructions
506+
// The shift goes in bits 22:21 of MOV* instructions
507507
uint8_t Shift = (Contents >> 21) & 0x3;
508508
// Immediate goes in bits 20:5
509509
Contents = (Contents >> 5) & 0xffff;

bolt/lib/Passes/ADRRelaxationPass.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,14 @@ void ADRRelaxationPass::runOnFunction(BinaryFunction &BF) {
5656
continue;
5757
}
5858

59-
BinaryFunction *TargetBF = BC.getFunctionForSymbol(Symbol);
60-
if (TargetBF && TargetBF == &BF)
61-
continue;
59+
// Don't relax adr if it points to the same function and it is not split
60+
// and BF initial size is < 1MB.
61+
const unsigned OneMB = 0x100000;
62+
if (!BF.isSplit() && BF.getSize() < OneMB) {
63+
BinaryFunction *TargetBF = BC.getFunctionForSymbol(Symbol);
64+
if (TargetBF && TargetBF == &BF)
65+
continue;
66+
}
6267

6368
MCPhysReg Reg;
6469
BC.MIB->getADRReg(Inst, Reg);
@@ -72,14 +77,17 @@ void ADRRelaxationPass::runOnFunction(BinaryFunction &BF) {
7277

7378
if (It != BB.begin() && BC.MIB->isNoop(*std::prev(It))) {
7479
It = BB.eraseInstruction(std::prev(It));
75-
} else if (opts::StrictMode && !BF.isSimple()) {
80+
} else if (std::next(It) != BB.end() && BC.MIB->isNoop(*std::next(It))) {
81+
BB.eraseInstruction(std::next(It));
82+
} else if (!opts::StrictMode && !BF.isSimple()) {
7683
// If the function is not simple, it may contain a jump table undetected
7784
// by us. This jump table may use an offset from the branch instruction
7885
// to land in the desired place. If we add new instructions, we
7986
// invalidate this offset, so we have to rely on linker-inserted NOP to
8087
// replace it with ADRP, and abort if it is not present.
88+
auto L = BC.scopeLock();
8189
errs() << formatv("BOLT-ERROR: Cannot relax adr in non-simple function "
82-
"{0}. Can't proceed in current mode.\n",
90+
"{0}. Use --strict option to override\n",
8391
BF.getOneName());
8492
PassFailed = true;
8593
return;

0 commit comments

Comments
 (0)