Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 533804b9d3f229207fdb883014466e94b874e1f9)
+++ src/SymTab/Autogen.cc	(revision 46adb831d26f53a5b963fcd80d14bef852513334)
@@ -17,4 +17,5 @@
 #include <iterator>
 #include "SynTree/Visitor.h"
+#include "SynTree/Attribute.h"
 #include "SynTree/Type.h"
 #include "SynTree/Statement.h"
@@ -275,4 +276,8 @@
 		// void ?{}(E *, E);
 		FunctionType *copyCtorType = genCopyType( refType->clone() );
+
+		// add unused attribute to parameters of default constructor and destructor
+		ctorType->get_parameters().front()->get_attributes().push_back( new Attribute( "unused" ) );
+		dtorType->get_parameters().front()->get_attributes().push_back( new Attribute( "unused" ) );
 
 		// xxx - should we also generate void ?{}(E *, int) and E ?{}(E *, E)?
@@ -516,4 +521,8 @@
 		cloneAll( typeParams, assignType->get_forall() );
 
+		// add unused attribute to parameters of default constructor and destructor
+		ctorType->get_parameters().front()->get_attributes().push_back( new Attribute( "unused" ) );
+		dtorType->get_parameters().front()->get_attributes().push_back( new Attribute( "unused" ) );
+
 		// Routines at global scope marked "static" to prevent multiple definitions is separate translation units
 		// because each unit generates copies of the default routines for each aggregate.
Index: src/tests/.expect/64/attributes.txt
===================================================================
--- src/tests/.expect/64/attributes.txt	(revision 533804b9d3f229207fdb883014466e94b874e1f9)
+++ src/tests/.expect/64/attributes.txt	(revision 46adb831d26f53a5b963fcd80d14bef852513334)
@@ -310,10 +310,10 @@
         __R__C13e__anonymous5_2,
     };
-    inline void ___constructor__F_R13e__anonymous5_intrinsic___2(enum __anonymous5 *___dst__R13e__anonymous5_2){
+    inline void ___constructor__F_R13e__anonymous5_intrinsic___2(__attribute__ ((unused)) enum __anonymous5 *___dst__R13e__anonymous5_2){
     }
     inline void ___constructor__F_R13e__anonymous513e__anonymous5_intrinsic___2(enum __anonymous5 *___dst__R13e__anonymous5_2, enum __anonymous5 ___src__13e__anonymous5_2){
         ((void)((*___dst__R13e__anonymous5_2)=___src__13e__anonymous5_2));
     }
-    inline void ___destructor__F_R13e__anonymous5_intrinsic___2(enum __anonymous5 *___dst__R13e__anonymous5_2){
+    inline void ___destructor__F_R13e__anonymous5_intrinsic___2(__attribute__ ((unused)) enum __anonymous5 *___dst__R13e__anonymous5_2){
     }
     inline enum __anonymous5 ___operator_assign__F13e__anonymous5_R13e__anonymous513e__anonymous5_intrinsic___2(enum __anonymous5 *___dst__R13e__anonymous5_2, enum __anonymous5 ___src__13e__anonymous5_2){
Index: src/tests/.expect/64/extension.txt
===================================================================
--- src/tests/.expect/64/extension.txt	(revision 533804b9d3f229207fdb883014466e94b874e1f9)
+++ src/tests/.expect/64/extension.txt	(revision 46adb831d26f53a5b963fcd80d14bef852513334)
@@ -60,10 +60,10 @@
     __extension__ int __c__i_1;
 };
-static inline void ___constructor__F_R2uU_autogen___1(union U *___dst__R2uU_1){
+static inline void ___constructor__F_R2uU_autogen___1(__attribute__ ((unused)) union U *___dst__R2uU_1){
 }
 static inline void ___constructor__F_R2uU2uU_autogen___1(union U *___dst__R2uU_1, union U ___src__2uU_1){
     ((void)__builtin_memcpy(((void *)___dst__R2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
 }
-static inline void ___destructor__F_R2uU_autogen___1(union U *___dst__R2uU_1){
+static inline void ___destructor__F_R2uU_autogen___1(__attribute__ ((unused)) union U *___dst__R2uU_1){
 }
 static inline union U ___operator_assign__F2uU_R2uU2uU_autogen___1(union U *___dst__R2uU_1, union U ___src__2uU_1){
@@ -73,5 +73,5 @@
     return ((union U )___ret__2uU_1);
 }
-static inline void ___constructor__F_R2uUi_autogen___1(union U *___dst__R2uU_1, int __src__i_1){
+static inline void ___constructor__F_R2uUi_autogen___1(__attribute__ ((unused)) union U *___dst__R2uU_1, int __src__i_1){
     ((void)__builtin_memcpy(((void *)___dst__R2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
 }
