[PATCH] D58322: remove microsoft intrinsics test that passes on osx but fails on linux

2019-02-16 Thread Dave Bozier via Phabricator via cfe-commits
davidb created this revision.
Herald added subscribers: cfe-commits, jdoerfert.
Herald added a project: clang.
davidb abandoned this revision.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D58322

Files:
  clang/test/CodeGen/ms-x86-intrinsics.c

Index: clang/test/CodeGen/ms-x86-intrinsics.c
===
--- clang/test/CodeGen/ms-x86-intrinsics.c
+++ /dev/null
@@ -1,172 +0,0 @@
-// XFAIL: colossus
-// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
-// RUN: -triple i686--windows -Oz -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-I386
-// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
-// RUN: -triple x86_64--windows -Oz -emit-llvm %s -o - \
-// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X64
-
-#if defined(__i386__)
-char test__readfsbyte(unsigned long Offset) {
-  return __readfsbyte(++Offset);
-}
-// CHECK-I386-LABEL: define dso_local signext i8 @test__readfsbyte(i32 %Offset)
-// CHECK-I386:   %inc = add i32 %Offset, 1
-// CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to i8 addrspace(257)*
-// CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(257)* [[PTR]], align 1
-// CHECK-I386:   ret i8 [[VALUE:%[0-9]+]]
-
-short test__readfsword(unsigned long Offset) {
-  return __readfsword(++Offset);
-}
-// CHECK-I386-LABEL: define dso_local signext i16 @test__readfsword(i32 %Offset)
-// CHECK-I386:   %inc = add i32 %Offset, 1
-// CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to i16 addrspace(257)*
-// CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(257)* [[PTR]], align 2
-// CHECK-I386:   ret i16 [[VALUE:%[0-9]+]]
-
-long test__readfsdword(unsigned long Offset) {
-  return __readfsdword(++Offset);
-}
-// CHECK-I386-LABEL: define dso_local i32 @test__readfsdword(i32 %Offset)
-// CHECK-I386:   %inc = add i32 %Offset, 1
-// CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to i32 addrspace(257)*
-// CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(257)* [[PTR]], align 4
-// CHECK-I386:   ret i32 [[VALUE:%[0-9]+]]
-
-long long test__readfsqword(unsigned long Offset) {
-  return __readfsqword(++Offset);
-}
-// CHECK-I386-LABEL: define dso_local i64 @test__readfsqword(i32 %Offset)
-// CHECK-I386:   %inc = add i32 %Offset, 1
-// CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to i64 addrspace(257)*
-// CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i64, i64 addrspace(257)* [[PTR]], align 8
-// CHECK-I386:   ret i64 [[VALUE:%[0-9]+]]
-#endif
-
-__int64 test__emul(int a, int b) {
-  return __emul(a, b);
-}
-// CHECK-LABEL: define dso_local i64 @test__emul(i32 %a, i32 %b)
-// CHECK: [[X:%[0-9]+]] = sext i32 %a to i64
-// CHECK: [[Y:%[0-9]+]] = sext i32 %b to i64
-// CHECK: [[RES:%[0-9]+]] = mul nsw i64 [[Y]], [[X]]
-// CHECK: ret i64 [[RES]]
-
-unsigned __int64 test__emulu(unsigned int a, unsigned int b) {
-  return __emulu(a, b);
-}
-// CHECK-LABEL: define dso_local i64 @test__emulu(i32 %a, i32 %b)
-// CHECK: [[X:%[0-9]+]] = zext i32 %a to i64
-// CHECK: [[Y:%[0-9]+]] = zext i32 %b to i64
-// CHECK: [[RES:%[0-9]+]] = mul nuw i64 [[Y]], [[X]]
-// CHECK: ret i64 [[RES]]
-
-#if defined(__x86_64__)
-
-char test__readgsbyte(unsigned long Offset) {
-  return __readgsbyte(++Offset);
-}
-// CHECK-X64-LABEL: define dso_local i8 @test__readgsbyte(i32 %Offset)
-// CHECK-X64:   %inc = add i32 %Offset, 1
-// CHECK-X64:   [[ZEXT:%[0-9]+]] = zext i32 %inc to i64
-// CHECK-X64:   [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i8 addrspace(256)*
-// CHECK-X64:   [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(256)* [[PTR]], align 1
-// CHECK-X64:   ret i8 [[VALUE:%[0-9]+]]
-
-short test__readgsword(unsigned long Offset) {
-  return __readgsword(++Offset);
-}
-// CHECK-X64-LABEL: define dso_local i16 @test__readgsword(i32 %Offset)
-// CHECK-X64:   %inc = add i32 %Offset, 1
-// CHECK-X64:   [[ZEXT:%[0-9]+]] = zext i32 %inc to i64
-// CHECK-X64:   [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i16 addrspace(256)*
-// CHECK-X64:   [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(256)* [[PTR]], align 2
-// CHECK-X64:   ret i16 [[VALUE:%[0-9]+]]
-
-long test__readgsdword(unsigned long Offset) {
-  return __readgsdword(++Offset);
-}
-// CHECK-X64-LABEL: define dso_local i32 @test__readgsdword(i32 %Offset)
-// CHECK-X64:   %inc = add i32 %Offset, 1
-// CHECK-X64:   [[ZEXT:%[0-9]+]] = zext i32 %inc to i64
-// CHECK-X64:   [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i32 addrspace(256)*
-// CHECK-X64:   [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(256)* [[PTR]], align 4
-// CHECK-X64:   ret i32 [[VALUE:%[0-9]+]]
-
-long long test__readgsqword(unsigned long Offset) {
-  return __readgsqword(++Offset);
-}
-// CHECK-X64-LABEL: define dso_local i64 @test__readgsqword(i32 %Offset)
-// CHECK-X64:   %inc = add i32 %Offset, 1
-

[PATCH] D27985: Add demangling support for C++11 thread_local variables

2016-12-20 Thread Dave Bozier via Phabricator via cfe-commits
davidb created this revision.
davidb added reviewers: howard.hinnant, mclow.lists.
davidb added a subscriber: cfe-commits.
davidb set the repository for this revision to rL LLVM.

Add support for demangling C++11 thread_local variables. In clang, the grammar 
for mangling for these names are   " ::= TW " for 
wrapper variables or   " ::= TH " for initialization 
variables.


Repository:
  rL LLVM

https://reviews.llvm.org/D27985

Files:
  src/cxa_demangle.cpp
  test/test_demangle.pass.cpp


Index: test/test_demangle.pass.cpp
===
--- test/test_demangle.pass.cpp
+++ test/test_demangle.pass.cpp
@@ -29594,6 +29594,8 @@
 // NOTE: disable this test since it is a negative test case, you cannot 
demangle a non-mangled symbol
 // {"\x6D", nullptr},  // This use to crash with ASAN
 {"_ZTIU4_farrVKPi", "typeinfo for int* const volatile restrict _far"},
+{"_ZTW1x", "thread-local wrapper routine for x"},
+{"_ZTHN3fooE", "thread-local initialization routine for foo"},
 };
 
 const unsigned N = sizeof(cases) / sizeof(cases[0]);
Index: src/cxa_demangle.cpp
===
--- src/cxa_demangle.cpp
+++ src/cxa_demangle.cpp
@@ -4343,6 +4343,8 @@
 //# base is the nominal target function of thunk
 //::= GV  # Guard variable for one-time 
initialization
 // # No 
+//::= TW  # Thread-local wrapper
+//::= TH  # Thread-local initialization
 //  extension ::= TC   _  # construction 
vtable for second-in-first
 //  extension ::= GR  # reference temporary for object
 
@@ -4446,6 +4448,28 @@
 }
 }
 break;
+case 'W':
+// TW  # Thread-local wrapper
+t = parse_name(first + 2, last, db);
+if (t != first + 2) 
+{
+if (db.names.empty())
+return first;
+db.names.back().first.insert(0, "thread-local wrapper 
routine for ");
+first = t;
+}
+break;
+case 'H':
+//TH  # Thread-local initialization
+t = parse_name(first + 2, last, db);
+if (t != first + 2) 
+{
+if (db.names.empty())
+return first;
+db.names.back().first.insert(0, "thread-local 
initialization routine for ");
+first = t;
+}
+break;
 default:
 // T  
 {


Index: test/test_demangle.pass.cpp
===
--- test/test_demangle.pass.cpp
+++ test/test_demangle.pass.cpp
@@ -29594,6 +29594,8 @@
 // NOTE: disable this test since it is a negative test case, you cannot demangle a non-mangled symbol
 // {"\x6D", nullptr},  // This use to crash with ASAN
 {"_ZTIU4_farrVKPi", "typeinfo for int* const volatile restrict _far"},
+{"_ZTW1x", "thread-local wrapper routine for x"},
+{"_ZTHN3fooE", "thread-local initialization routine for foo"},
 };
 
 const unsigned N = sizeof(cases) / sizeof(cases[0]);
Index: src/cxa_demangle.cpp
===
--- src/cxa_demangle.cpp
+++ src/cxa_demangle.cpp
@@ -4343,6 +4343,8 @@
 //# base is the nominal target function of thunk
 //::= GV  # Guard variable for one-time initialization
 // # No 
+//::= TW  # Thread-local wrapper
+//::= TH  # Thread-local initialization
 //  extension ::= TC   _  # construction vtable for second-in-first
 //  extension ::= GR  # reference temporary for object
 
@@ -4446,6 +4448,28 @@
 }
 }
 break;
+case 'W':
+// TW  # Thread-local wrapper
+t = parse_name(first + 2, last, db);
+if (t != first + 2) 
+{
+if (db.names.empty())
+return first;
+db.names.back().first.insert(0, "thread-local wrapper routine for ");
+first = t;
+}
+break;
+case 'H':
+//TH  # Thread-local initialization
+t = parse_name(first + 2, last, db);
+if (t != first + 2) 
+{
+if (db.names.empty())
+return first;
+db.names.back().first.insert(0, "thread-local initialization routine for ");
+first = t;
+}
+break;
 default:
 // T  
 {
__

[PATCH] D27985: Add demangling support for C++11 thread_local variables

2017-01-18 Thread Dave Bozier via Phabricator via cfe-commits
davidb added a comment.

ping


Repository:
  rL LLVM

https://reviews.llvm.org/D27985



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27985: Add demangling support for C++11 thread_local variables

2017-01-26 Thread Dave Bozier via Phabricator via cfe-commits
davidb added a comment.

ping


Repository:
  rL LLVM

https://reviews.llvm.org/D27985



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27985: Add demangling support for C++11 thread_local variables

2017-01-30 Thread Dave Bozier via Phabricator via cfe-commits
davidb added a comment.

In https://reviews.llvm.org/D27985#660029, @mehdi_amini wrote:

> LGTM.
>
> Can you apply the patch in LLVM (libDemangle) as well please?


Thank you Mehdi. I have an LLVM (libDemangle) with an identical change (minus 
the tests) waiting. Would you like my to submit it as a separate patch?

I've just requested commit access so fingers crossed I can apply them both soon.


Repository:
  rL LLVM

https://reviews.llvm.org/D27985



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27985: Add demangling support for C++11 thread_local variables

2017-01-31 Thread Dave Bozier via Phabricator via cfe-commits
davidb closed this revision.
davidb added a comment.

Closed by revision r293638.


Repository:
  rL LLVM

https://reviews.llvm.org/D27985



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits