Skip to content

Commit 4a1b378

Browse files
authored
Merge pull request #28576 from adrian-prantl/57110020-5.1
Use the same alignment for writing and reading .swift_ast section contents
2 parents 4b8db65 + 770a75b commit 4a1b378

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

lib/ASTSectionImporter/ASTSectionImporter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ bool swift::parseASTSection(MemoryBufferSerializedModuleLoader &Loader,
6363
return false;
6464
}
6565

66-
buf = buf.substr(info.bytes);
66+
buf = buf.substr(llvm::alignTo(info.bytes, 4));
6767
}
6868

6969
return true;

lib/IRGen/IRGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,7 @@ swift::createSwiftModuleObjectFile(SILModule &SILMod, StringRef Buffer,
12381238
break;
12391239
}
12401240
ASTSym->setSection(Section);
1241-
ASTSym->setAlignment(8);
1241+
ASTSym->setAlignment(4);
12421242
::performLLVM(Opts, &Ctx.Diags, nullptr, nullptr, IGM.getModule(),
12431243
IGM.TargetMachine.get(),
12441244
Ctx.LangOpts.EffectiveLanguageVersion,

test/DebugInfo/ASTSection-multi.swift

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// REQUIRES: OS=linux-gnu
2+
// REQUIRES: executable_test
3+
// REQUIRES: swift_tools_extra
4+
5+
// Test that concatenated .swift_ast sections of various sizes can be parsed.
6+
7+
// RUN: %empty-directory(%t)
8+
9+
// RUN: echo "public let a0 = 0" >%t/a0.swift
10+
11+
// RUN: echo "public let a1 = 0" >%t/a1.swift
12+
// RUN: echo "public let b1 = 0" >>%t/a1.swift
13+
14+
// RUN: echo "public let a2 = 0" >%t/a2.swift
15+
// RUN: echo "public let b2 = 0" >>%t/a2.swift
16+
// RUN: echo "public let c2 = 0" >>%t/a2.swift
17+
18+
// RUN: echo "public let a3 = 0" >%t/a3.swift
19+
// RUN: echo "public let b3 = 0" >>%t/a3.swift
20+
// RUN: echo "public let c3 = 0" >>%t/a3.swift
21+
// RUN: echo "public let d3 = 0" >>%t/a3.swift
22+
23+
// RUN: %target-build-swift %t/a0.swift -c -g -o %t/a0.o -parse-as-library
24+
// RUN: %target-build-swift %t/a1.swift -c -g -o %t/a1.o -parse-as-library
25+
// RUN: %target-build-swift %t/a2.swift -c -g -o %t/a2.o -parse-as-library
26+
// RUN: %target-build-swift %t/a3.swift -c -g -o %t/a3.o -parse-as-library
27+
28+
// RUN: %target-build-swift %t/a0.swift -emit-module -emit-module-path %t/a0.swiftmodule
29+
// RUN: %target-build-swift %t/a1.swift -emit-module -emit-module-path %t/a1.swiftmodule
30+
// RUN: %target-build-swift %t/a2.swift -emit-module -emit-module-path %t/a2.swiftmodule
31+
// RUN: %target-build-swift %t/a3.swift -emit-module -emit-module-path %t/a3.swiftmodule
32+
33+
// RUN: %target-swift-modulewrap %t/a0.swiftmodule -o %t/a0-mod.o
34+
// RUN: %target-swift-modulewrap %t/a1.swiftmodule -o %t/a1-mod.o
35+
// RUN: %target-swift-modulewrap %t/a2.swiftmodule -o %t/a2-mod.o
36+
// RUN: %target-swift-modulewrap %t/a3.swiftmodule -o %t/a3-mod.o
37+
38+
// RUN: %target-build-swift -o %t/a.out %s \
39+
// RUN: %t/a0.o %t/a0-mod.o \
40+
// RUN: %t/a1.o %t/a1-mod.o \
41+
// RUN: %t/a2.o %t/a2-mod.o \
42+
// RUN: %t/a3.o %t/a3-mod.o
43+
44+
// RUN: %lldb-moduleimport-test -verbose %t/a.out | %FileCheck %s
45+
// CHECK: Importing a0... ok!
46+
// CHECK: Importing a1... ok!
47+
// CHECK: Importing a2... ok!
48+
// CHECK: Importing a3... ok!
49+

0 commit comments

Comments
 (0)