Skip to content

Commit 4b4a00d

Browse files
author
z1_cciauto
authored
merge main into amd-staging (llvm#2342)
2 parents b8a7ea1 + 17c59b2 commit 4b4a00d

38 files changed

+1272
-841
lines changed

clang/lib/AST/ByteCode/Function.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class Function final {
115115

116116
/// Returns the name of the function decl this code
117117
/// was generated for.
118-
const std::string getName() const {
118+
std::string getName() const {
119119
if (!Source || !getDecl())
120120
return "<<expr>>";
121121

clang/lib/Driver/ToolChains/ZOS.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,10 @@ void zos::Linker::ConstructJob(Compilation &C, const JobAction &JA,
153153
StringRef OutputName = Output.getFilename();
154154
// Strip away the last file suffix in presence from output name and add
155155
// a new .x suffix.
156-
size_t Suffix = OutputName.find_last_of('.');
157-
const char *SideDeckName =
158-
Args.MakeArgString(OutputName.substr(0, Suffix) + ".x");
156+
SmallString<128> SideDeckName = OutputName;
157+
llvm::sys::path::replace_extension(SideDeckName, "x");
159158
CmdArgs.push_back("-x");
160-
CmdArgs.push_back(SideDeckName);
159+
CmdArgs.push_back(Args.MakeArgString(SideDeckName));
161160
} else {
162161
// We need to direct side file to /dev/null to suppress linker warning when
163162
// the object file contains exported symbols, and -shared or

clang/test/Driver/zos-ld-sidedeck.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Try using various forms of output file name to see what side deck file name looks like
2+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o foo.out 2>&1 \
3+
// RUN: | FileCheck --check-prefix=SD-BASE %s
4+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o foo 2>&1 \
5+
// RUN: | FileCheck --check-prefix=SD-BASE %s
6+
// SD-BASE: "-x" "foo.x"
7+
8+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o lib/foo.out 2>&1 \
9+
// RUN: | FileCheck --check-prefix=SD-SUBDIR %s
10+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o lib/foo 2>&1 \
11+
// RUN: | FileCheck --check-prefix=SD-SUBDIR %s
12+
// SD-SUBDIR: "-x" "lib/foo.x"
13+
14+
15+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o ../lib/foo.out 2>&1 \
16+
// RUN: | FileCheck --check-prefix=SD-REL %s
17+
// RUN: %clang -### --shared --target=s390x-ibm-zos %s -o ../lib/foo 2>&1 \
18+
// RUN: | FileCheck --check-prefix=SD-REL %s
19+
// SD-REL: "-x" "../lib/foo.x"

llvm/include/llvm/MC/MCLinkerOptimizationHint.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class MCLOHDirective {
108108
/// Emit this directive in \p OutStream using the information available
109109
/// in the given \p ObjWriter and \p Layout to get the address of the
110110
/// arguments within the object file.
111-
void emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
111+
void emit_impl(raw_ostream &OutStream,
112112
const MachObjectWriter &ObjWriter) const;
113113

114114
public:

llvm/include/llvm/MC/MCMachObjectWriter.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,8 @@ class MachObjectWriter final : public MCObjectWriter {
184184

185185
const MCSymbol &findAliasedSymbol(const MCSymbol &Sym) const;
186186

187-
/// \name Lifetime management Methods
188-
/// @{
189-
190187
void reset() override;
191-
192-
/// @}
188+
void setAssembler(MCAssembler *Asm) override;
193189

194190
/// \name Utility Methods
195191
/// @{
@@ -208,7 +204,7 @@ class MachObjectWriter final : public MCObjectWriter {
208204
uint64_t getSectionAddress(const MCSection *Sec) const {
209205
return SectionAddress.lookup(Sec);
210206
}
211-
uint64_t getSymbolAddress(const MCSymbol &S, const MCAssembler &Asm) const;
207+
uint64_t getSymbolAddress(const MCSymbol &S) const;
212208

213209
uint64_t getFragmentAddress(const MCAssembler &Asm,
214210
const MCFragment *Fragment) const;

llvm/include/llvm/MC/MCObjectWriter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class MCObjectWriter {
9797
MutableArrayRef<std::pair<std::string, size_t>> getFileNames() {
9898
return FileNames;
9999
}
100-
void addFileName(MCAssembler &Asm, StringRef FileName);
100+
void addFileName(StringRef FileName);
101101
void setCompilerVersion(StringRef CompilerVers) {
102102
CompilerVersion = CompilerVers;
103103
}

llvm/include/llvm/MC/MCParser/AsmLexer.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,6 @@ class AsmLexer {
213213
StringRef LexUntilEndOfLine();
214214
};
215215

216-
using MCAsmLexer = AsmLexer;
217-
218216
} // end namespace llvm
219217

220218
#endif // LLVM_MC_MCPARSER_ASMLEXER_H

llvm/include/llvm/MC/MCParser/MCAsmLexer.h

Lines changed: 0 additions & 9 deletions
This file was deleted.

llvm/include/llvm/MC/MCParser/MCAsmParser.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ class MCAsmParser {
163163
MCContext &getContext() { return Ctx; }
164164
MCStreamer &getStreamer() { return Out; }
165165
SourceMgr &getSourceManager() { return SrcMgr; }
166-
MCAsmLexer &getLexer() { return Lexer; }
167-
const MCAsmLexer &getLexer() const { return Lexer; }
166+
AsmLexer &getLexer() { return Lexer; }
167+
const AsmLexer &getLexer() const { return Lexer; }
168168

169169
MCTargetAsmParser &getTargetParser() const { return *TargetParser; }
170170
void setTargetParser(MCTargetAsmParser &P);

llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ class MCAsmParserExtension {
5353

5454
MCContext &getContext() { return getParser().getContext(); }
5555

56-
MCAsmLexer &getLexer() { return getParser().getLexer(); }
57-
const MCAsmLexer &getLexer() const {
56+
AsmLexer &getLexer() { return getParser().getLexer(); }
57+
const AsmLexer &getLexer() const {
5858
return const_cast<MCAsmParserExtension *>(this)->getLexer();
5959
}
6060

llvm/include/llvm/MC/MCWinCOFFObjectWriter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class WinCOFFObjectWriter final : public MCObjectWriter {
6060

6161
// MCObjectWriter interface implementation.
6262
void reset() override;
63+
void setAssembler(MCAssembler *Asm) override;
6364
void setIncrementalLinkerCompatible(bool Value) {
6465
IncrementalLinkerCompatible = Value;
6566
}

llvm/lib/MC/MCLinkerOptimizationHint.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,20 @@ using namespace llvm;
2323
// - Its argN.
2424
// <arg1> to <argN> are absolute addresses in the object file, i.e.,
2525
// relative addresses from the beginning of the object file.
26-
void MCLOHDirective::emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
26+
void MCLOHDirective::emit_impl(raw_ostream &OutStream,
2727
const MachObjectWriter &ObjWriter
2828

2929
) const {
3030
encodeULEB128(Kind, OutStream);
3131
encodeULEB128(Args.size(), OutStream);
3232
for (const MCSymbol *Arg : Args)
33-
encodeULEB128(ObjWriter.getSymbolAddress(*Arg, Asm), OutStream);
33+
encodeULEB128(ObjWriter.getSymbolAddress(*Arg), OutStream);
3434
}
3535

3636
void MCLOHDirective::emit(const MCAssembler &Asm,
3737
MachObjectWriter &ObjWriter) const {
3838
raw_ostream &OutStream = ObjWriter.W.OS;
39-
emit_impl(Asm, OutStream, ObjWriter);
39+
emit_impl(OutStream, ObjWriter);
4040
}
4141

4242
uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
@@ -54,6 +54,6 @@ uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
5454
};
5555

5656
raw_counting_ostream OutStream;
57-
emit_impl(Asm, OutStream, ObjWriter);
57+
emit_impl(OutStream, ObjWriter);
5858
return OutStream.tell();
5959
}

llvm/lib/MC/MCObjectStreamer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -753,15 +753,15 @@ void MCObjectStreamer::emitNops(int64_t NumBytes, int64_t ControlledNopLength,
753753

754754
void MCObjectStreamer::emitFileDirective(StringRef Filename) {
755755
MCAssembler &Asm = getAssembler();
756-
Asm.getWriter().addFileName(Asm, Filename);
756+
Asm.getWriter().addFileName(Filename);
757757
}
758758

759759
void MCObjectStreamer::emitFileDirective(StringRef Filename,
760760
StringRef CompilerVersion,
761761
StringRef TimeStamp,
762762
StringRef Description) {
763763
MCObjectWriter &W = getAssembler().getWriter();
764-
W.addFileName(getAssembler(), Filename);
764+
W.addFileName(Filename);
765765
if (CompilerVersion.size())
766766
W.setCompilerVersion(CompilerVersion);
767767
// TODO: add TimeStamp and Description to .file symbol table entry

llvm/lib/MC/MCObjectWriter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ bool MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
5151
return &SecA == &SecB;
5252
}
5353

54-
void MCObjectWriter::addFileName(MCAssembler &Asm, StringRef FileName) {
55-
FileNames.emplace_back(std::string(FileName), Asm.Symbols.size());
54+
void MCObjectWriter::addFileName(StringRef FileName) {
55+
FileNames.emplace_back(std::string(FileName), Asm->Symbols.size());
5656
}
5757

5858
MCContext &MCObjectTargetWriter::getContext() const {

llvm/lib/MC/MCParser/AsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ class AsmParser : public MCAsmParser {
721721

722722
class HLASMAsmParser final : public AsmParser {
723723
private:
724-
MCAsmLexer &Lexer;
724+
AsmLexer &Lexer;
725725
MCStreamer &Out;
726726

727727
void lexLeadingSpaces() {

llvm/lib/MC/MCParser/ELFAsmParser.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ bool ELFAsmParser::parseDirectiveSection(StringRef, SMLoc loc) {
394394
}
395395

396396
bool ELFAsmParser::maybeParseSectionType(StringRef &TypeName) {
397-
MCAsmLexer &L = getLexer();
397+
AsmLexer &L = getLexer();
398398
if (L.isNot(AsmToken::Comma))
399399
return false;
400400
Lex();
@@ -427,7 +427,7 @@ bool ELFAsmParser::parseMergeSize(int64_t &Size) {
427427
}
428428

429429
bool ELFAsmParser::parseGroup(StringRef &GroupName, bool &IsComdat) {
430-
MCAsmLexer &L = getLexer();
430+
AsmLexer &L = getLexer();
431431
if (L.isNot(AsmToken::Comma))
432432
return TokError("expected group name");
433433
Lex();
@@ -452,7 +452,7 @@ bool ELFAsmParser::parseGroup(StringRef &GroupName, bool &IsComdat) {
452452
}
453453

454454
bool ELFAsmParser::parseLinkedToSym(MCSymbolELF *&LinkedToSym) {
455-
MCAsmLexer &L = getLexer();
455+
AsmLexer &L = getLexer();
456456
if (L.isNot(AsmToken::Comma))
457457
return TokError("expected linked-to symbol");
458458
Lex();
@@ -561,7 +561,7 @@ bool ELFAsmParser::parseSectionArguments(bool IsPush, SMLoc loc) {
561561
if (maybeParseSectionType(TypeName))
562562
return true;
563563

564-
MCAsmLexer &L = getLexer();
564+
AsmLexer &L = getLexer();
565565
if (TypeName.empty()) {
566566
if (Mergeable)
567567
return TokError("Mergeable section must specify the type");

llvm/lib/MC/MCParser/MCAsmParserExtension.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ bool MCAsmParserExtension::parseDirectiveCGProfile(StringRef, SMLoc) {
6060
}
6161

6262
bool MCAsmParserExtension::maybeParseUniqueID(int64_t &UniqueID) {
63-
MCAsmLexer &L = getLexer();
63+
AsmLexer &L = getLexer();
6464
if (L.isNot(AsmToken::Comma))
6565
return false;
6666
Lex();

llvm/lib/MC/MCParser/WasmAsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace {
3535

3636
class WasmAsmParser : public MCAsmParserExtension {
3737
MCAsmParser *Parser = nullptr;
38-
MCAsmLexer *Lexer = nullptr;
38+
AsmLexer *Lexer = nullptr;
3939

4040
template<bool (WasmAsmParser::*HandlerMethod)(StringRef, SMLoc)>
4141
void addDirectiveHandler(StringRef Directive) {

llvm/lib/MC/MCParser/XCOFFAsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace {
1717

1818
class XCOFFAsmParser : public MCAsmParserExtension {
1919
MCAsmParser *Parser = nullptr;
20-
MCAsmLexer *Lexer = nullptr;
20+
AsmLexer *Lexer = nullptr;
2121

2222
template <bool (XCOFFAsmParser::*HandlerMethod)(StringRef, SMLoc)>
2323
void addDirectiveHandler(StringRef Directive) {

llvm/lib/MC/MachObjectWriter.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ void MachObjectWriter::reset() {
6262
MCObjectWriter::reset();
6363
}
6464

65+
void MachObjectWriter::setAssembler(MCAssembler *Asm) {
66+
MCObjectWriter::setAssembler(Asm);
67+
TargetObjectWriter->setAssembler(Asm);
68+
}
69+
6570
bool MachObjectWriter::doesSymbolRequireExternRelocation(const MCSymbol &S) {
6671
// Undefined symbols are always extern.
6772
if (S.isUndefined())
@@ -94,16 +99,15 @@ MachObjectWriter::getFragmentAddress(const MCAssembler &Asm,
9499
Asm.getFragmentOffset(*Fragment);
95100
}
96101

97-
uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
98-
const MCAssembler &Asm) const {
102+
uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S) const {
99103
// If this is a variable, then recursively evaluate now.
100104
if (S.isVariable()) {
101105
if (const MCConstantExpr *C =
102106
dyn_cast<const MCConstantExpr>(S.getVariableValue()))
103107
return C->getValue();
104108

105109
MCValue Target;
106-
if (!S.getVariableValue()->evaluateAsRelocatable(Target, &Asm))
110+
if (!S.getVariableValue()->evaluateAsRelocatable(Target, Asm))
107111
report_fatal_error("unable to evaluate offset for variable '" +
108112
S.getName() + "'");
109113

@@ -117,14 +121,14 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
117121

118122
uint64_t Address = Target.getConstant();
119123
if (Target.getAddSym())
120-
Address += getSymbolAddress(*Target.getAddSym(), Asm);
124+
Address += getSymbolAddress(*Target.getAddSym());
121125
if (Target.getSubSym())
122-
Address -= getSymbolAddress(*Target.getSubSym(), Asm);
126+
Address -= getSymbolAddress(*Target.getSubSym());
123127
return Address;
124128
}
125129

126130
return getSectionAddress(S.getFragment()->getParent()) +
127-
Asm.getSymbolOffset(S);
131+
Asm->getSymbolOffset(S);
128132
}
129133

130134
uint64_t MachObjectWriter::getPaddingSize(const MCAssembler &Asm,
@@ -432,7 +436,7 @@ void MachObjectWriter::writeNlist(MachSymbolData &MSD, const MCAssembler &Asm) {
432436
if (IsAlias && Symbol->isUndefined())
433437
Address = AliaseeInfo->StringIndex;
434438
else if (Symbol->isDefined())
435-
Address = getSymbolAddress(OrigSymbol, Asm);
439+
Address = getSymbolAddress(OrigSymbol);
436440
else if (Symbol->isCommon()) {
437441
// Common symbols are encoded with the size in the address
438442
// field, and their alignment in the flags.
@@ -1052,10 +1056,10 @@ uint64_t MachObjectWriter::writeObject() {
10521056

10531057
// Write out the data-in-code region payload, if there is one.
10541058
for (DataRegionData Data : DataRegions) {
1055-
uint64_t Start = getSymbolAddress(*Data.Start, Asm);
1059+
uint64_t Start = getSymbolAddress(*Data.Start);
10561060
uint64_t End;
10571061
if (Data.End)
1058-
End = getSymbolAddress(*Data.End, Asm);
1062+
End = getSymbolAddress(*Data.End);
10591063
else
10601064
report_fatal_error("Data region not terminated");
10611065

0 commit comments

Comments
 (0)