[cfe-dev] Clang x86-64 can't move segment registers
Tobias Hahn via cfe-dev
cfe-dev at lists.llvm.org
Tue Jun 5 08:38:59 PDT 2018
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
More information about the cfe-dev
mailing list