Skip to content

Enable custom alloc-like ops in promoteBufferResultsToOutParams #120288

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

srcarroll
Copy link
Contributor

@srcarroll srcarroll commented Dec 17, 2024

In buffer-results-to-out-params, when hoist-static-allocs option is enabled the pass was looking for memref.allocs in order to attempt to avoid copies when it can. Which makes it not extensible to external ops that have allocation like properties. This patch simply changes memref::AllocOp to AllocationOpInterface in the check to enable for any allocation op.
Moreover, for function call updates, we enable setting an allocation function callback in BufferResultsToOutParamsOpts to allow users to emit their own alloc-like op.

@llvmbot llvmbot added mlir mlir:bufferization Bufferization infrastructure labels Dec 17, 2024
@llvmbot
Copy link
Member

llvmbot commented Dec 17, 2024

@llvm/pr-subscribers-mlir

@llvm/pr-subscribers-mlir-bufferization

Author: None (srcarroll)

Changes

In buffer-results-to-out-params, when hoist-static-allocs option is enabled the pass was looking for memref.allocs to avoid. Which makes it not extensible to external ops that have allocation like properties. This patch simply changes memref::AllocOp to AllocationOpInterface in the check to enable for any allocation op.


Full diff: https://github.com/llvm/llvm-project/pull/120288.diff

1 Files Affected:

  • (modified) mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp (+3-1)
diff --git a/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp b/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
index b7755b2be8483b..b4d2d6b0c5da8f 100644
--- a/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
+++ b/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "mlir/Dialect/Bufferization/IR/AllocationOpInterface.h"
 #include "mlir/Dialect/Bufferization/Transforms/Passes.h"
 
 #include "mlir/Dialect/Func/IR/FuncOps.h"
@@ -121,7 +122,8 @@ static LogicalResult updateReturnOps(func::FuncOp func,
     OpBuilder builder(op);
     for (auto [orig, arg] : llvm::zip(copyIntoOutParams, appendedEntryArgs)) {
       if (hoistStaticAllocs &&
-          isa_and_nonnull<memref::AllocOp>(orig.getDefiningOp()) &&
+          isa_and_nonnull<bufferization::AllocationOpInterface>(
+              orig.getDefiningOp()) &&
           mlir::cast<MemRefType>(orig.getType()).hasStaticShape()) {
         orig.replaceAllUsesWith(arg);
         orig.getDefiningOp()->erase();

@srcarroll
Copy link
Contributor Author

srcarroll commented Dec 17, 2024

i think in addition to this, we should also enable custom alloc op in

Value outParam = builder.create<memref::AllocOp>(op.getLoc(), allocType);
via bufferization option callback like the copy function. @matthias-springer any thoughts?

@srcarroll srcarroll requested a review from Menooker December 18, 2024 02:05
@srcarroll srcarroll changed the title Enable any AllocationOpInterface with hoistStaticAllocs option Enable custom alloc-like ops in promoteBufferResultsToOutParams Dec 19, 2024
@srcarroll
Copy link
Contributor Author

i think in addition to this, we should also enable custom alloc op in

Value outParam = builder.create<memref::AllocOp>(op.getLoc(), allocType);

via bufferization option callback like the copy function. @matthias-springer any thoughts?

@matthias-springer i ended up doing this, but if you disagree i can always revert.

@@ -167,6 +174,10 @@ struct BufferResultsToOutParamsOpts {
return true;
};

/// Allocation function; used to allocate a memref.
/// If this is empty, memref.alloc is used
std::optional<AllocationFn> allocationFn;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be avoided by adding a buildAlloc interface method to AllocationOpInterface? Maybe the transformation could also supported mixed alloc ops then>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure that would work actually. wouldn't you need an instance of an AllocationOpInterface to call the method? In this context there is no such instance, since we are creating a new one. Maybe i'm missing something. Also I do think I prefer this since it mirrors alloc and copy customization in bufferization.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, you only have a memref SSA value, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yah, this is used in updateCalls for allocating at the call site and uses the arg types to allocate

@@ -224,7 +232,13 @@ LogicalResult mlir::bufferization::promoteBufferResultsToOutParams(
return failure();
}
}
if (failed(updateCalls(module, options)))
auto defaultAllocationFn = [](OpBuilder &builder, Location loc,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could give keep this as a default value in the struct, then the field doesn't have to be optional and you can pass the options to updateCalls. Not sure if it's possible without including MemRefOps.h in Passes.h though. (Maybe we can split the header?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure that sounds good to me. i think i would want to do that with the copy op too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i was just kinda following what had already been done with copy. i think they should be treated the same in this context either way

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it's possible without including MemRefOps.h in Passes.h though. (Maybe we can split the header?)

If you are opposed to including MemRefOps.h I could just forward declare the appropriate ops if you prefer. I have no particular preference and honestly don't know what's best practice in this case.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, no. i don't think forward declaration would work here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i went ahead and just included MemRef.h for now. Passes.h was already included. Naively, I think this is ok since the default use of this would have to link the memref dialect anyway if I'm not mistaken. But let me know if this is no good

@srcarroll srcarroll force-pushed the buffer-results-to-out-params-generalize branch from f868c2a to cc788e0 Compare December 20, 2024 19:40
@srcarroll
Copy link
Contributor Author

@matthias-springer i barely noticed you approved, but I think it was before my latest commit so just wanted to make sure it's still good to go. thanks!

Copy link
Member

@matthias-springer matthias-springer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@srcarroll srcarroll merged commit 8906b7b into llvm:main Dec 26, 2024
8 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Dec 26, 2024

LLVM Buildbot has detected a new failure on builder sanitizer-aarch64-linux-bootstrap-msan running on sanitizer-buildbot10 while building mlir at step 2 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/94/builds/3216

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 82808 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
FAIL: lld :: ELF/ppc64-toc-call-to-pcrel-long-jump.s (81945 of 82808)
******************** TEST 'lld :: ELF/ppc64-toc-call-to-pcrel-long-jump.s' FAILED ********************
Exit Code: 139

Command Output (stderr):
--
RUN: at line 2: split-file /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp
+ split-file /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp
RUN: at line 4: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 5: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
ld.lld: warning: cannot find entry symbol _start; not setting start address
RUN: at line 6: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
RUN: at line 7: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
RUN: at line 9: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64 /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64 /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 10: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
ld.lld: warning: cannot find entry symbol _start; not setting start address
RUN: at line 11: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
RUN: at line 12: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
RUN: at line 14: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 15: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le --no-power10-stubs
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le --no-power10-stubs
ld.lld: warning: cannot find entry symbol _start; not setting start address
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x0000b94da2b0f20c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld+0x465f20c)
 #1 0x0000b94da2b0cffc llvm::sys::RunSignalHandlers() (/home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld+0x465cffc)
 #2 0x0000b94da2b0fa7c SignalHandler(int) Signals.cpp:0:0
Step 13 (stage3/msan check) failure: stage3/msan check (failure)
...
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 82808 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
FAIL: lld :: ELF/ppc64-toc-call-to-pcrel-long-jump.s (81945 of 82808)
******************** TEST 'lld :: ELF/ppc64-toc-call-to-pcrel-long-jump.s' FAILED ********************
Exit Code: 139

Command Output (stderr):
--
RUN: at line 2: split-file /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp
+ split-file /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp
RUN: at line 4: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 5: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
ld.lld: warning: cannot find entry symbol _start; not setting start address
RUN: at line 6: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
RUN: at line 7: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
RUN: at line 9: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64 /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64 /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 10: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
ld.lld: warning: cannot find entry symbol _start; not setting start address
RUN: at line 11: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-objdump --no-show-raw-insn -d /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s
RUN: at line 12: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be | /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-readelf -s /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_be
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm-project/lld/test/ELF/ppc64-toc-call-to-pcrel-long-jump.s --check-prefix=SYM
RUN: at line 14: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/llvm-mc -filetype=obj -triple=powerpc64le /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/asm -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o
RUN: at line 15: /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le --no-power10-stubs
+ /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld -T /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp/lts /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp.o -o /home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/tools/lld/test/ELF/Output/ppc64-toc-call-to-pcrel-long-jump.s.tmp_le --no-power10-stubs
ld.lld: warning: cannot find entry symbol _start; not setting start address
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x0000b94da2b0f20c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld+0x465f20c)
 #1 0x0000b94da2b0cffc llvm::sys::RunSignalHandlers() (/home/b/sanitizer-aarch64-linux-bootstrap-msan/build/llvm_build2_msan/bin/ld.lld+0x465cffc)
 #2 0x0000b94da2b0fa7c SignalHandler(int) Signals.cpp:0:0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mlir:bufferization Bufferization infrastructure mlir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants