[llvm-testresults] buildbot failure in llvm on clang-x86_64-linux

Jeffrey Yasskin jyasskin at google.com
Thu Nov 12 09:21:29 PST 2009


Oh, yuck. :( This area's totally broken. Your patch makes perfect
sense, but it breaks a series of accidents that were making this work.

The basic idea is that, on x86-64, calls more than 2GB away need to
use a movabs+call instead of a simple call instruction. The current
code generator always generates simple calls, so far calls have to go
through a stub. The lazy JIT also generates stubs, and previous
generations of JIT maintainers got confused between these two purposes
for stubs. Thus we have code that looks like it's handling lazy
compilation, which is actually protecting against far calls. Here, you
removed a lazy-compilation stub for an external function more than 2GB
away from the call site, and the pc-relative call broke, because the
lazy-compilation stub was being used as a far-call stub.

I'm almost done with a patch to make the code generator use far calls
in all cases, which will fix this:
http://codereview.appspot.com/154066. After that's in, your patch
should be safe.

Would you mind rolling back your change until I can get the far-call patch in?

On Thu, Nov 12, 2009 at 12:54 AM, Eric Christopher <echristo at apple.com> wrote:
> Hi Jeffrey,
>
> I can't duplicate this on any of the darwin machines, could you take a look at what's going on and my last patch please? A failure mode would help :)
>
> -eric
>
>>
>> Can't duplicate it more at the moment, I'll look more after dinner:
>>
>> [ghostwheel:ExecutionEngine/JIT/Debug] echristo% ./JITTests
>> [==========] Running 15 tests from 4 test cases.
>> [----------] Global test environment set-up.
>> [----------] 3 tests from JITEventListenerTest
>> [ RUN      ] JITEventListenerTest.Simple
>> [       OK ] JITEventListenerTest.Simple
>> [ RUN      ] JITEventListenerTest.MultipleListenersDontInterfere
>> [       OK ] JITEventListenerTest.MultipleListenersDontInterfere
>> [ RUN      ] JITEventListenerTest.MatchesMachineCodeInfo
>> [       OK ] JITEventListenerTest.MatchesMachineCodeInfo
>> [----------] 6 tests from JITMemoryManagerTest
>> [ RUN      ] JITMemoryManagerTest.NoAllocations
>> [       OK ] JITMemoryManagerTest.NoAllocations
>> [ RUN      ] JITMemoryManagerTest.TestCodeAllocation
>> [       OK ] JITMemoryManagerTest.TestCodeAllocation
>> [ RUN      ] JITMemoryManagerTest.TestSmallGlobalInts
>> [       OK ] JITMemoryManagerTest.TestSmallGlobalInts
>> [ RUN      ] JITMemoryManagerTest.TestLargeGlobalArray
>> [       OK ] JITMemoryManagerTest.TestLargeGlobalArray
>> [ RUN      ] JITMemoryManagerTest.TestManyGlobals
>> [       OK ] JITMemoryManagerTest.TestManyGlobals
>> [ RUN      ] JITMemoryManagerTest.TestManyStubs
>> [       OK ] JITMemoryManagerTest.TestManyStubs
>> [----------] 1 test from JIT
>> [ RUN      ] JIT.GlobalInFunction
>> [       OK ] JIT.GlobalInFunction
>> [----------] 5 tests from JITTest
>> [ RUN      ] JITTest.FarCallToKnownFunction
>> [       OK ] JITTest.FarCallToKnownFunction
>> [ RUN      ] JITTest.NonLazyCompilationStillNeedsStubs
>> [       OK ] JITTest.NonLazyCompilationStillNeedsStubs
>> [ RUN      ] JITTest.NonLazyLeaksNoStubs
>> [       OK ] JITTest.NonLazyLeaksNoStubs
>> [ RUN      ] JITTest.ModuleDeletion
>> [       OK ] JITTest.ModuleDeletion
>> [ RUN      ] JITTest.NoStubs
>> [       OK ] JITTest.NoStubs
>> [----------] Global test environment tear-down
>> [==========] 15 tests from 4 test cases ran.
>> [  PASSED  ] 15 tests.
>> [ghostwheel:ExecutionEngine/JIT/Debug] echristo% file ./JITTests
>> ./JITTests: Mach-O 64-bit executable x86_64
>>
>
>




More information about the llvm-testresults mailing list