]> granicus.if.org Git - clang/commitdiff
Support dllimport and dllexport on x86-64 Windows. PR10978. Patch by Ruben Van...
authorEli Friedman <eli.friedman@gmail.com>
Fri, 30 Sep 2011 18:53:25 +0000 (18:53 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Fri, 30 Sep 2011 18:53:25 +0000 (18:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140871 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/TargetAttributesSema.cpp
test/Sema/dllimport-dllexport.c

index 877bc32521a98117223505601dc7909f6439a3e6..3a065cead501ed3fbd1a5ce3b89004ea67f2017a 100644 (file)
@@ -248,7 +248,8 @@ namespace {
         default:                          break;
         }
       }
-      if (Attr.getName()->getName() == "force_align_arg_pointer" ||
+      if (Triple.getArch() != llvm::Triple::x86_64 &&
+          Attr.getName()->getName() == "force_align_arg_pointer" ||
           Attr.getName()->getName() == "__force_align_arg_pointer__") {
         HandleX86ForceAlignArgPointerAttr(D, Attr, S);
         return true;
@@ -264,14 +265,14 @@ const TargetAttributesSema &Sema::getTargetAttributesSema() const {
 
   const llvm::Triple &Triple(Context.getTargetInfo().getTriple());
   switch (Triple.getArch()) {
-  default:
-    return *(TheTargetAttributesSema = new TargetAttributesSema);
-
   case llvm::Triple::msp430:
     return *(TheTargetAttributesSema = new MSP430AttributesSema);
   case llvm::Triple::mblaze:
     return *(TheTargetAttributesSema = new MBlazeAttributesSema);
   case llvm::Triple::x86:
+  case llvm::Triple::x86_64:
     return *(TheTargetAttributesSema = new X86AttributesSema);
+  default:
+    return *(TheTargetAttributesSema = new TargetAttributesSema);
   }
 }
index f09e3cf69ab5f2b96e0f11d4564716412c23405a..610059ec9f6b0b10dc4612faabe539abe833196c 100644 (file)
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -triple x86_64-mingw32 -fsyntax-only -verify %s
 
 inline void __attribute__((dllexport)) foo1(){} // expected-warning{{dllexport attribute ignored}}
 inline void __attribute__((dllimport)) foo2(){} // expected-warning{{dllimport attribute ignored}}