r288093 - Use ${:uid} to generate unique MS asm labels, not {:uid}
Sean Silva via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 6 21:49:44 PST 2016
Thanks.
2016-12-06 16:28 GMT-08:00 Reid Kleckner <rnk at google.com>:
> Comments in r288868. It implements GCC's %= inline asm feature, and we're
> just using it from MS-style inline asm to avoid duplicate labels clashing.
>
> 2016-12-01 0:37 GMT-08:00 Sean Silva <chisophugis at gmail.com>:
>
>> what is this ${:uid} thing? Could the comment
>> in Sema::GetOrCreateMSAsmLabel explain it?
>>
>> -- Sean Silva
>>
>> On Mon, Nov 28, 2016 at 4:39 PM, Reid Kleckner via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> Author: rnk
>>> Date: Mon Nov 28 18:39:37 2016
>>> New Revision: 288093
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=288093&view=rev
>>> Log:
>>> Use ${:uid} to generate unique MS asm labels, not {:uid}
>>>
>>> Modified:
>>> cfe/trunk/lib/Sema/SemaStmtAsm.cpp
>>> cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
>>> cfe/trunk/test/CodeGen/ms-inline-asm.c
>>> cfe/trunk/test/CodeGen/ms-inline-asm.cpp
>>>
>>> Modified: cfe/trunk/lib/Sema/SemaStmtAsm.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaS
>>> tmtAsm.cpp?rev=288093&r1=288092&r2=288093&view=diff
>>> ============================================================
>>> ==================
>>> --- cfe/trunk/lib/Sema/SemaStmtAsm.cpp (original)
>>> +++ cfe/trunk/lib/Sema/SemaStmtAsm.cpp Mon Nov 28 18:39:37 2016
>>> @@ -753,7 +753,7 @@ LabelDecl *Sema::GetOrCreateMSAsmLabel(S
>>> // Create an internal name for the label. The name should not be a
>>> valid mangled
>>> // name, and should be unique. We use a dot to make the name an
>>> invalid mangled
>>> // name.
>>> - OS << "__MSASMLABEL_.{:uid}__";
>>> + OS << "__MSASMLABEL_.${:uid}__";
>>> for (char C : ExternalLabelName) {
>>> OS << C;
>>> // We escape '$' in asm strings by replacing it with "$$"
>>>
>>> Modified: cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/m
>>> ozilla-ms-inline-asm.c?rev=288093&r1=288092&r2=288093&view=diff
>>> ============================================================
>>> ==================
>>> --- cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c (original)
>>> +++ cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c Mon Nov 28 18:39:37
>>> 2016
>>> @@ -20,7 +20,7 @@ void invoke(void* that, unsigned methodI
>>> // CHECK: call void asm sideeffect inteldialect
>>> // CHECK: mov edx,dword ptr $1
>>> // CHECK: test edx,edx
>>> -// CHECK: jz {{[^_]*}}__MSASMLABEL_.{:uid}__noparams
>>> +// CHECK: jz {{[^_]*}}__MSASMLABEL_.${:uid}__noparams
>>> // ^ Can't use {{.*}} here because the matching is greedy.
>>> // CHECK: mov eax,edx
>>> // CHECK: shl eax,$$3
>>> @@ -28,7 +28,7 @@ void invoke(void* that, unsigned methodI
>>> // CHECK: mov ecx,esp
>>> // CHECK: push dword ptr $0
>>> // CHECK: call dword ptr $2
>>> -// CHECK: {{.*}}__MSASMLABEL_.{:uid}__noparams:
>>> +// CHECK: {{.*}}__MSASMLABEL_.${:uid}__noparams:
>>> // CHECK: mov ecx,dword ptr $3
>>> // CHECK: push ecx
>>> // CHECK: mov edx,[ecx]
>>>
>>> Modified: cfe/trunk/test/CodeGen/ms-inline-asm.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/m
>>> s-inline-asm.c?rev=288093&r1=288092&r2=288093&view=diff
>>> ============================================================
>>> ==================
>>> --- cfe/trunk/test/CodeGen/ms-inline-asm.c (original)
>>> +++ cfe/trunk/test/CodeGen/ms-inline-asm.c Mon Nov 28 18:39:37 2016
>>> @@ -249,7 +249,7 @@ void t23() {
>>> the_label:
>>> }
>>> // CHECK: t23
>>> -// CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.{:uid}__the_label:", "~{dirflag},~{fpsr},~{flags}"(
>>> )
>>> +// CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.${:uid}__the_label:",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> }
>>>
>>> void t24_helper(void) {}
>>> @@ -595,7 +595,7 @@ void label1() {
>>> jmp label
>>> }
>>> // CHECK-LABEL: define void @label1()
>>> - // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.{:uid}__label:\0A\09jmp
>>> {{.*}}__MSASMLABEL_.{:uid}__label", "~{dirflag},~{fpsr},~{flags}"()
>>> [[ATTR1:#[0-9]+]]
>>> + // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.${:uid}__label:\0A\09jmp
>>> {{.*}}__MSASMLABEL_.${:uid}__label", "~{dirflag},~{fpsr},~{flags}"()
>>> [[ATTR1:#[0-9]+]]
>>> }
>>>
>>> void label2() {
>>> @@ -604,7 +604,7 @@ void label2() {
>>> label:
>>> }
>>> // CHECK-LABEL: define void @label2
>>> - // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.{:uid}__label\0A\09{{.*}}__MSASMLABEL_.{:uid}__label:",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> + // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.${:uid}__label\0A\09{{.*}}__MSASMLABEL_.${:uid}__label:",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> }
>>>
>>> void label3() {
>>> @@ -613,7 +613,7 @@ void label3() {
>>> mov eax, label
>>> }
>>> // CHECK-LABEL: define void @label3
>>> - // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.{:uid}__label:\0A\09mov eax,
>>> {{.*}}__MSASMLABEL_.{:uid}__label", "~{eax},~{dirflag},~{fpsr},~{f
>>> lags}"()
>>> + // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.${:uid}__label:\0A\09mov eax,
>>> {{.*}}__MSASMLABEL_.${:uid}__label", "~{eax},~{dirflag},~{fpsr},~{f
>>> lags}"()
>>> }
>>>
>>> void label4() {
>>> @@ -622,7 +622,7 @@ void label4() {
>>> mov eax, [label]
>>> }
>>> // CHECK-LABEL: define void @label4
>>> - // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.{:uid}__label:\0A\09mov eax,
>>> {{.*}}__MSASMLABEL_.{:uid}__label", "~{eax},~{dirflag},~{fpsr},~{f
>>> lags}"()
>>> + // CHECK: call void asm sideeffect inteldialect
>>> "{{.*}}__MSASMLABEL_.${:uid}__label:\0A\09mov eax,
>>> {{.*}}__MSASMLABEL_.${:uid}__label", "~{eax},~{dirflag},~{fpsr},~{f
>>> lags}"()
>>> }
>>>
>>> void label5() {
>>> @@ -631,7 +631,7 @@ void label5() {
>>> dollar_label$:
>>> }
>>> // CHECK-LABEL: define void @label5
>>> - // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.{:uid}__dollar_label$$\0A\09{{.*}}__MSAS
>>> MLABEL_.{:uid}__dollar_label$$:", "~{dirflag},~{fpsr},~{flags}"()
>>> + // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.${:uid}__dollar_label$$\0A\09{{.*}}__MSA
>>> SMLABEL_.${:uid}__dollar_label$$:", "~{dirflag},~{fpsr},~{flags}"()
>>> }
>>>
>>> void label6(){
>>> @@ -640,7 +640,7 @@ void label6(){
>>> label:
>>> }
>>> // CHECK-LABEL: define void @label6
>>> - // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.{:uid}__label\0A\09{{.*}}__MSASMLABEL_.{:uid}__label:",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> + // CHECK: call void asm sideeffect inteldialect "jmp
>>> {{.*}}__MSASMLABEL_.${:uid}__label\0A\09{{.*}}__MSASMLABEL_.${:uid}__label:",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> }
>>>
>>> typedef union _LARGE_INTEGER {
>>>
>>> Modified: cfe/trunk/test/CodeGen/ms-inline-asm.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/m
>>> s-inline-asm.cpp?rev=288093&r1=288092&r2=288093&view=diff
>>> ============================================================
>>> ==================
>>> --- cfe/trunk/test/CodeGen/ms-inline-asm.cpp (original)
>>> +++ cfe/trunk/test/CodeGen/ms-inline-asm.cpp Mon Nov 28 18:39:37 2016
>>> @@ -126,14 +126,14 @@ void t7_using() {
>>> void t8() {
>>> __asm some_label:
>>> // CHECK-LABEL: define void @_Z2t8v()
>>> - // CHECK: call void asm sideeffect inteldialect
>>> "L__MSASMLABEL_.{:uid}__some_label:", "~{dirflag},~{fpsr},~{flags}"()
>>> + // CHECK: call void asm sideeffect inteldialect
>>> "L__MSASMLABEL_.${:uid}__some_label:", "~{dirflag},~{fpsr},~{flags}"()
>>> struct A {
>>> static void g() {
>>> __asm jmp some_label ; This should jump forwards
>>> __asm some_label:
>>> __asm nop
>>> // CHECK-LABEL: define internal void @_ZZ2t8vEN1A1gEv()
>>> - // CHECK: call void asm sideeffect inteldialect "jmp
>>> L__MSASMLABEL_.{:uid}__some_label\0A\09L__MSASMLABEL_.{:uid}__some_label:\0A\09nop",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> + // CHECK: call void asm sideeffect inteldialect "jmp
>>> L__MSASMLABEL_.${:uid}__some_label\0A\09L__MSASMLABEL_.${:uid}__some_label:\0A\09nop",
>>> "~{dirflag},~{fpsr},~{flags}"()
>>> }
>>> };
>>> A::g();
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161206/a0495e1a/attachment-0001.html>
More information about the cfe-commits
mailing list