Skip to content

Commit 479baf4

Browse files
HEIR Teamcopybara-github
authored andcommitted
Updates LLVM usage to match [9d24f9437944](llvm/llvm-project@9d24f9437944) PiperOrigin-RevId: 728265165
1 parent 8684abf commit 479baf4

File tree

4 files changed

+28
-65
lines changed

4 files changed

+28
-65
lines changed

bazel/import_llvm.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ load(
77

88
def import_llvm(name):
99
"""Imports LLVM."""
10-
LLVM_COMMIT = "34cf04b59b8d94c8eeb9929ec2cd3d63631af86f"
10+
LLVM_COMMIT = "9d24f943794420e512512eb9329341355e9289f8"
1111

1212
new_git_repository(
1313
name = name,

lib/Pipelines/PipelineRegistration.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ namespace mlir::heir {
3939
void tosaToLinalg(OpPassManager &manager) {
4040
manager.addNestedPass<FuncOp>(createTosaToLinalgNamed());
4141
manager.addNestedPass<FuncOp>(createTosaToLinalg());
42-
manager.addNestedPass<FuncOp>(createTosaToArith(true, false));
43-
manager.addNestedPass<FuncOp>(createTosaToTensor());
42+
manager.addNestedPass<FuncOp>(createTosaToArithPass({true, false}));
43+
manager.addNestedPass<FuncOp>(createTosaToTensorPass());
4444
manager.addPass(bufferization::createEmptyTensorToAllocTensorPass());
4545
manager.addNestedPass<FuncOp>(createLinalgDetensorizePass());
4646
manager.addPass(createConvertTensorToLinalgPass());
@@ -60,7 +60,7 @@ void oneShotBufferize(OpPassManager &manager) {
6060
manager.addPass(bufferization::createBufferDeallocationSimplificationPass());
6161
manager.addPass(bufferization::createLowerDeallocationsPass());
6262
manager.addPass(createCSEPass());
63-
manager.addPass(mlir::createBufferizationToMemRefPass());
63+
manager.addPass(mlir::createConvertBufferizationToMemRefPass());
6464
manager.addPass(createCanonicalizerPass());
6565
}
6666

@@ -114,7 +114,7 @@ void polynomialToLLVMPipelineBuilder(OpPassManager &manager) {
114114
// But lowering to loops also re-introduces affine.apply, so re-lower that
115115
manager.addNestedPass<FuncOp>(createConvertLinalgToLoopsPass());
116116
manager.addPass(createLowerAffinePass());
117-
manager.addPass(createBufferizationToMemRefPass());
117+
manager.addPass(createConvertBufferizationToMemRefPass());
118118

119119
// Cleanup
120120
manager.addPass(createCanonicalizerPass());
@@ -124,7 +124,7 @@ void polynomialToLLVMPipelineBuilder(OpPassManager &manager) {
124124

125125
// ToLLVM
126126
manager.addPass(arith::createArithExpandOpsPass());
127-
manager.addPass(createConvertSCFToCFPass());
127+
manager.addPass(createSCFToControlFlowPass());
128128
manager.addNestedPass<FuncOp>(memref::createExpandStridedMetadataPass());
129129
manager.addPass(createConvertToLLVMPass());
130130

@@ -161,7 +161,7 @@ void basicMLIRToLLVMPipelineBuilder(OpPassManager &manager) {
161161

162162
// ToLLVM
163163
manager.addPass(arith::createArithExpandOpsPass());
164-
manager.addPass(createConvertSCFToCFPass());
164+
manager.addPass(createSCFToControlFlowPass());
165165
manager.addNestedPass<FuncOp>(memref::createExpandStridedMetadataPass());
166166
manager.addPass(createConvertToLLVMPass());
167167

patches/llvm.patch

Lines changed: 20 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,24 @@
11
Auto generated patch. Do not edit or delete it, even if empty.
2-
diff -ruN --strip-trailing-cr a/libcxx/src/iostream.cpp b/libcxx/src/iostream.cpp
3-
--- a/libcxx/src/iostream.cpp
4-
+++ b/libcxx/src/iostream.cpp
5-
@@ -18,8 +18,8 @@
2+
diff -ruN --strip-trailing-cr a/utils/bazel/llvm-project-overlay/llvm/config.bzl b/utils/bazel/llvm-project-overlay/llvm/config.bzl
3+
--- a/utils/bazel/llvm-project-overlay/llvm/config.bzl
4+
+++ b/utils/bazel/llvm-project-overlay/llvm/config.bzl
5+
@@ -47,6 +47,7 @@
66

7-
template <class StreamT, class BufferT>
8-
union stream_data {
9-
- stream_data() {}
10-
- ~stream_data() {}
11-
+ constexpr stream_data() {}
12-
+ constexpr ~stream_data() {}
13-
struct {
14-
// The stream has to be the first element, since that's referenced by the stream declarations in <iostream>
15-
StreamT stream;
16-
@@ -38,13 +38,19 @@
17-
#define CHAR_MANGLING_wchar_t "_W"
18-
#define CHAR_MANGLING(CharT) CHAR_MANGLING_##CharT
7+
linux_defines = posix_defines + [
8+
"_GNU_SOURCE",
9+
+ "HAVE_GETAUXVAL=1",
10+
"HAVE_MALLINFO=1",
11+
"HAVE_SBRK=1",
12+
"HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC=1",
13+
diff -ruN --strip-trailing-cr a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
14+
--- a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
15+
+++ b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
16+
@@ -296,7 +296,7 @@
1917

20-
+#ifdef _LIBCPP_COMPILER_CLANG_BASED
21-
+# define STRING_DATA_CONSTINIT constinit
22-
+#else
23-
+# define STRING_DATA_CONSTINIT
24-
+#endif
25-
+
26-
#ifdef _LIBCPP_ABI_MICROSOFT
27-
# define STREAM(StreamT, BufferT, CharT, var) \
28-
- stream_data<StreamT<CharT>, BufferT<CharT>> var __asm__( \
29-
+ STRING_DATA_CONSTINIT stream_data<StreamT<CharT>, BufferT<CharT>> var __asm__( \
30-
"?" #var "@" ABI_NAMESPACE_STR "@std@@3V?$" #StreamT \
31-
"@" CHAR_MANGLING(CharT) "U?$char_traits@" CHAR_MANGLING(CharT) "@" ABI_NAMESPACE_STR "@std@@@12@A")
32-
#else
33-
-# define STREAM(StreamT, BufferT, CharT, var) stream_data<StreamT<CharT>, BufferT<CharT>> var
34-
+# define STREAM(StreamT, BufferT, CharT, var) STRING_DATA_CONSTINIT stream_data<StreamT<CharT>, BufferT<CharT>> var
35-
#endif
18+
/* HAVE_PROC_PID_RUSAGE defined in Bazel */
3619

37-
// These definitions and the declarations in <iostream> technically cause ODR violations, since they have different
38-
diff -ruN --strip-trailing-cr a/libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.global.pass.cpp b/libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.global.pass.cpp
39-
--- a/libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.global.pass.cpp
40-
+++ b/libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.global.pass.cpp
41-
@@ -0,0 +1,20 @@
42-
+//===----------------------------------------------------------------------===//
43-
+//
44-
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45-
+// See https://llvm.org/LICENSE.txt for license information.
46-
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
47-
+//
48-
+//===----------------------------------------------------------------------===//
49-
+
50-
+#include <iostream>
51-
+
52-
+// FIXME: Remove after issue https://github.com/llvm/llvm-project/issues/127348 resolved.
53-
+extern "C" const char* __asan_default_options() { return "check_initialization_order=true:strict_init_order=true"; }
54-
+
55-
+// Test that ios used from globals constructors doesn't trigger Asan initialization-order-fiasco.
56-
+
57-
+struct Global {
58-
+ Global() { std::cout << "Hello!"; }
59-
+} global;
60-
+
61-
+int main(int, char**) { return 0; }
20+
-#define HAVE_GETAUXVAL 1
21+
+/* HAVE_GETAUXVAL defined in Bazel */
22+
23+
/* Directly provide definitions here behind platform preprocessor definitions.
24+
* The preprocessor conditions are sufficient to handle all of the configuration

tools/heir-opt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ int main(int argc, char **argv) {
229229
registerPass(
230230
[]() -> std::unique_ptr<Pass> { return createConvertFuncToLLVMPass(); });
231231
registerPass(
232-
[]() -> std::unique_ptr<Pass> { return createConvertSCFToCFPass(); });
232+
[]() -> std::unique_ptr<Pass> { return createSCFToControlFlowPass(); });
233233
registerPass([]() -> std::unique_ptr<Pass> {
234234
return createFinalizeMemRefToLLVMConversionPass();
235235
});

0 commit comments

Comments
 (0)