tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
authorJason Merrill <jason@redhat.com>
Thu, 3 Jul 2008 04:32:25 +0000 (00:32 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 3 Jul 2008 04:32:25 +0000 (00:32 -0400)
        * gcc/tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
        * gcc/cp/Make-lang.in (cp/typeck2.o): Add  dependency.
        * libstdc++-v3/libsupc++/initializer_list: Uglify and wrap in
        __GXX_EXPERIMENTAL_CXX0X__.
        * libstdc++-v3/include/bits/stl_map.h (insert(initializer_list)): Wrap.

From-SVN: r137406

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/tree.c
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_map.h
libstdc++-v3/libsupc++/initializer_list

index 5f0b367731de480a16d3d8e44bf2949c1e7c572b..433157ab87040fa7e180277e70f4066a6983047b 100644 (file)
 
 2008-07-02  Jason Merrill  <jason@redhat.com>
 
+       * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
+
        * tree.c (ctor_to_list): New fn.
        * tree.h: Declare it.
        (CONSTRUCTOR_ELT): New macro.
index 3bf8c97596df5aaa281563e0caa4fbf91280d5dc..6475b43fc1b7d24c731e73b7e165200a40e81af1 100644 (file)
@@ -1,5 +1,7 @@
 2008-07-02  Jason Merrill  <jason@redhat.com>
 
+       * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
+
        Implement WG21 N2672, Initializer List proposed wording
        * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
        (struct lang_type_class): Add has_list_ctor bitfield.
index 6fced350ec4ef311a41928f9836fa740116708d9..c7877205f2567f4f347cc9d12e05336bd972b1df 100644 (file)
@@ -245,7 +245,7 @@ cp/cp-objcp-common.o : cp/cp-objcp-common.c $(CONFIG_H) $(SYSTEM_H) \
   langhooks.h $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) debug.h \
   $(CXX_PRETTY_PRINT_H) cp/cp-objcp-common.h gt-cp-cp-objcp-common.h
 cp/typeck2.o: cp/typeck2.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h output.h \
-  $(TM_P_H) $(DIAGNOSTIC_H) gt-cp-typeck2.h
+  $(TM_P_H) $(DIAGNOSTIC_H) gt-cp-typeck2.h $(REAL_H)
 cp/typeck.o: cp/typeck.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) $(RTL_H) $(EXPR_H) \
   toplev.h $(DIAGNOSTIC_H) convert.h $(C_COMMON_H) $(TARGET_H)
 cp/class.o: cp/class.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h $(RTL_H) \
index a8f66dbb895898ed23e0905b3f3664738b8e838a..491a7b319eeeaaf9edf44fc1556650a3cb8866dc 100644 (file)
@@ -1835,13 +1835,11 @@ ctor_to_list (tree ctor)
   tree list = NULL_TREE;
   tree *p = &list;
   unsigned ix;
-  constructor_elt *ce;
+  tree purpose, val;
 
-  for (ix = 0;
-       VEC_iterate (constructor_elt, CONSTRUCTOR_ELTS (ctor), ix, ce);
-       ++ix)
+  FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (ctor), ix, purpose, val)
     {
-      *p = build_tree_list (ce->index, ce->value);
+      *p = build_tree_list (purpose, val);
       p = &TREE_CHAIN (*p);
     }
 
index 4c3689e34213aa6dac900a8e622483841c0e4013..6f0b4152c47a16d82be99e1e09e857c4591e481c 100644 (file)
@@ -1,3 +1,9 @@
+2008-07-02  Jason Merrill  <jason@redhat.com>
+
+       * libsupc++/initializer_list: Uglify and wrap in 
+       __GXX_EXPERIMENTAL_CXX0X__.
+       * include/bits/stl_map.h (insert(initializer_list)): Wrap.
+
 2008-07-02  Jason Merrill  <jason@redhat.com>
 
        * libsupc++/initializer_list: New file.
index cf0c16bc42d14c823f500804f780af1ca27d0149..cd85b9ab75d6d796a3cffd0be7cd4f9a457d3dab 100644 (file)
@@ -469,6 +469,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       insert(const value_type& __x)
       { return _M_t._M_insert_unique(__x); }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
       /**
        *  @brief Attempts to insert a list of std::pairs into the %map.
        *  @param  list  A std::initializer_list<value_type> of pairs to be
@@ -478,8 +479,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        *
        */
       void
-      insert(std::initializer_list<value_type> list)
-      { insert (list.begin(), list.end()); }
+      insert(std::initializer_list<value_type> __list)
+      { insert (__list.begin(), __list.end()); }
+#endif
 
       /**
        *  @brief Attempts to insert a std::pair into the %map.
index 1a3cba3dd0206a8fa79692847a536400cfdf2c7f..3c81bb69c8b3a22a906bc933ccd8e47aa25f6e2b 100644 (file)
 #ifndef __CXX_INITIALIZER_LIST
 #define __CXX_INITIALIZER_LIST
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+
 #pragma GCC visibility push(default)
 
 #include <cstddef>
 
 namespace std
 {
-  template<class E>
+  template<class _E>
   class initializer_list
   {
-    const E* _array;
-    size_t _len;
+    const _E* __array;
+    size_t __len;
 
     // The compiler can call a private constructor.
-    initializer_list(const E* _a, size_t _l)
-      : _array(_a), _len(_l) { }
+    initializer_list(const _E* __a, size_t __l)
+      : __array(__a), __len(__l) { }
 
   public:
     initializer_list()
-      : _array(NULL), _len(0) {}
+      : __array(NULL), __len(0) {}
     
     size_t size() const                // number of elements
-    { return _len; }
-    const E* begin() const     // first element
-    { return _array; }
-    const E* end() const       // one past the last element
+    { return __len; }
+    const _E* begin() const    // first element
+    { return __array; }
+    const _E* end() const      // one past the last element
     { return begin() + size(); }
   };
 }
 
 #pragma GCC visibility pop
+#endif // C++0x
 #endif // __CXX_INITIALIZER_LIST