Index: src/AST/Attribute.cpp
===================================================================
--- src/AST/Attribute.cpp	(revision 59c8dff49bbb5284b39ab27da894a644327a531a)
+++ src/AST/Attribute.cpp	(revision f988834af650698a46072a2a91bb190224a866bd)
@@ -38,9 +38,9 @@
 
 bool Attribute::isValidOnFuncParam() const {
-	// attributes such as aligned, cleanup, etc. produce GCC errors when they appear
-	// on function parameters. Maintain here a whitelist of attribute names that are
-	// allowed to appear on parameters.
+	// Attributes produce GCC errors when they appear on function
+	// parameters. Names on the previous allow-list implementation:
+	// unused, noreturn, __vector_size__
 	std::string norm = normalizedName();
-	return norm == "unused" || norm == "noreturn";
+	return norm != "aligned" && norm != "packed" && norm != "used";
 }
 
Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 59c8dff49bbb5284b39ab27da894a644327a531a)
+++ src/AST/Decl.hpp	(revision f988834af650698a46072a2a91bb190224a866bd)
@@ -29,5 +29,4 @@
 #include "StorageClasses.hpp"
 #include "Visitor.hpp"
-#include "Common/utility.h"
 
 // Must be included in *all* AST classes; should be #undef'd at the end of the file
Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision 59c8dff49bbb5284b39ab27da894a644327a531a)
+++ src/AST/Pass.proto.hpp	(revision f988834af650698a46072a2a91bb190224a866bd)
@@ -19,4 +19,5 @@
 #include "Common/Iterate.hpp"
 #include "Common/Stats/Heap.h"
+#include "Common/utility.h"
 namespace ast {
 	template<typename core_t> class Pass;
