[cfe-dev] Clang x86-64 can't move segment registers

Craig Topper via cfe-dev cfe-dev at lists.llvm.org
Tue Jun 5 08:59:21 PDT 2018


It should be movw. The segment registers are only 16-bits wide. We used to
accept it because the Intel documentation sort of makes it look valid
because you can use a 64-bit GPR as the destination, but it doesn't make
any sense to use 64-bits when writing to memory. GNU assembler 2.30 feels
the same way so it probably doesn't work in gcc either.

~Craig


On Tue, Jun 5, 2018 at 8:39 AM Tobias Hahn via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Since clang 6, the following code produces `error: invalid operand for
> instruction`:
>
> ```c++
> void f()
> {
>   asm("movq %cs, 160(%rsp);");
>   asm("movq %fs, 168(%rsp);");
>   asm("movq %gs, 176(%rsp);");
> }
> ```
> (see https://godbolt.org/g/CgPBb9)
>
> Two questions: 1. Is this a bug or a feature? 2. Is this a clang
> bug/feature or an llvm one (a.k.a what is the right place to report this)?
>
> (Background: I ran into this while trying to roll clang to a new version
> in a project containing PLCrashReporter, which uses these instructions
> while capturing a thread context, see [1]. I'm now trying to figure out if
> this is a compiler bug or if PLCrashReporter needs to be patched.)
>
> Thanks!
> Tobias
>
> [1]
> https://github.com/plausiblelabs/plcrashreporter/blob/master/Source/PLCrashAsyncThread_current.S#L96
>
> Ableton AG, Schoenhauser Allee 6-7, 10119 Berlin, Germany
> Sitz (Registered Office) Berlin, Amtsgericht Berlin-Charlottenburg, HRB
> 72838
> Vorstand (Management Board): Gerhard Behles, Jan Bohl
> Vorsitzender des Aufsichtsrats (Chair of the Supervisory Board): Uwe Struck
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180605/019ec2cc/attachment.html>


More information about the cfe-dev mailing list