OSDN Git Service

2009-04-08 Tristan Gingold <gingold@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Apr 2009 13:46:35 +0000 (13:46 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Apr 2009 13:46:35 +0000 (13:46 +0000)
* gcc-interface/utils.c, gcc-interface/decl.c, gcc-interface/gigi.h:
Add support for pragma Thread_Local_Storage

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145730 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c
gcc/ada/gcc-interface/gigi.h
gcc/ada/gcc-interface/utils.c

index 0231903..c73aa0a 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-08  Tristan Gingold  <gingold@adacore.com>
+
+       * gcc-interface/utils.c, gcc-interface/decl.c, gcc-interface/gigi.h:
+       Add support for pragma Thread_Local_Storage
+       
 2009-04-08  Ed Schonberg  <schonberg@adacore.com>
 
        * inline.adb (Back_End_Cannot_Inline): Do not mark a body as inlineable
index 5984027..291bc2b 100644 (file)
@@ -5435,6 +5435,10 @@ prepend_attributes (Entity_Id gnat_entity, struct attrib ** attr_list)
            etype = ATTR_WEAK_EXTERNAL;
            break;
 
+         case Pragma_Thread_Local_Storage:
+           etype = ATTR_THREAD_LOCAL_STORAGE;
+           break;
+
          default:
            continue;
          }
index ffd1767..42b5d17 100644 (file)
@@ -345,6 +345,7 @@ enum attr_type
   ATTR_LINK_SECTION,
   ATTR_LINK_CONSTRUCTOR,
   ATTR_LINK_DESTRUCTOR,
+  ATTR_THREAD_LOCAL_STORAGE,
   ATTR_WEAK_EXTERNAL
 };
 
index 78080b1..62ffb1b 100644 (file)
@@ -1631,6 +1631,14 @@ process_attributes (tree decl, struct attrib *attr_list)
        DECL_STATIC_DESTRUCTOR (decl) = 1;
        TREE_USED (decl) = 1;
        break;
+
+      case ATTR_THREAD_LOCAL_STORAGE:
+       if (targetm.have_tls)
+         DECL_TLS_MODEL (decl) = decl_default_tls_model (decl);
+       else
+         post_error ("thread-local storage not supported for this target",
+                     attr_list->error_point);
+       break;
       }
 }
 \f