Strange TLS-related x86_64 pattern (Re: [llvm-commits] [llvm] r107860)

Ulrich Weigand Ulrich.Weigand at de.ibm.com
Wed Feb 27 05:59:33 PST 2013


Eric Christopher <echristo at gmail.com> wrote on 26.02.2013 20:24:44:

> Hrm. Sorry for the delay, just noticed this in my email that I
> needed to respond to...
>
> It may not be possible to generate it, I think that pattern was only
> supposed to be enabled for far data, but as I said, it needs more
> tests. I was just fixing it so that the correct patterns would be
> matched for the test there.

Hmm, so it seems the intent was for this pattern to get used with
initial-exec TLS accesses in large code model?

Interestingly enough, that doesn't seem to be working:

Building the following .ll file with llc -code-model=large

target triple = "x86_64-unknown-linux"

@x = external thread_local(initialexec) global i64

define i64 @test() {
entry:
  %0 = load i64* @x, align 8
  ret i64 %0
}

results in:

LLVM ERROR: Cannot select: 0x11f93410: i64 = X86ISD::WrapperRIP 0x11f93310
[ID=7]
  0x11f93310: i64 = TargetGlobalTLSAddress<i64* @x> 0 [TF=10] [ID=5]
In function: test

(with unmodified LLVM head)

Bye,
Ulrich




More information about the llvm-commits mailing list