aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>2015-08-21 01:15:33 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2015-08-21 01:15:33 +0000
commit6b00e42da3a26fae6f878e3b83baffbda7f79227 (patch)
tree622d454a1868dda05940920cea5067868cc30c82
parent70b0dcce28f993b2d6fcf7851bc8aadc7b60c38d (diff)
downloadgcc-6b00e42da3a26fae6f878e3b83baffbda7f79227.zip
gcc-6b00e42da3a26fae6f878e3b83baffbda7f79227.tar.gz
gcc-6b00e42da3a26fae6f878e3b83baffbda7f79227.tar.bz2
add default for CONSTANT_ALIGNMENT
gcc/ChangeLog: 2015-08-20 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h (CONSTANT_ALIGNMENT): New macro definition. * builtins.c (get_object_alignment_2): Adjust. * varasm.c (align_variable): Likewise. (get_variable_align): Likewise. (build_constant_desc): Likewise. (force_const_mem): Likewise. * doc/tm.texi.in: Likewise. * doc/tm.texi: Regenerate. From-SVN: r227052
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/builtins.c6
-rw-r--r--gcc/defaults.h4
-rw-r--r--gcc/doc/tm.texi2
-rw-r--r--gcc/doc/tm.texi.in2
-rw-r--r--gcc/varasm.c17
6 files changed, 23 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2943501..2063885 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,16 @@
2015-08-20 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
+ * defaults.h (CONSTANT_ALIGNMENT): New macro definition.
+ * builtins.c (get_object_alignment_2): Adjust.
+ * varasm.c (align_variable): Likewise.
+ (get_variable_align): Likewise.
+ (build_constant_desc): Likewise.
+ (force_const_mem): Likewise.
+ * doc/tm.texi.in: Likewise.
+ * doc/tm.texi: Regenerate.
+
+2015-08-20 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
+
* genconfig.c (main): Always define HAVE_cc0.
* recog.c (rest_of_handle_peephole2): Adjust.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 31969ca..635ba54 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -314,10 +314,9 @@ get_object_alignment_2 (tree exp, unsigned int *alignp,
/* The alignment of a CONST_DECL is determined by its initializer. */
exp = DECL_INITIAL (exp);
align = TYPE_ALIGN (TREE_TYPE (exp));
-#ifdef CONSTANT_ALIGNMENT
if (CONSTANT_CLASS_P (exp))
align = (unsigned) CONSTANT_ALIGNMENT (exp, align);
-#endif
+
known_alignment = true;
}
else if (DECL_P (exp))
@@ -393,10 +392,9 @@ get_object_alignment_2 (tree exp, unsigned int *alignp,
/* STRING_CST are the only constant objects we allow to be not
wrapped inside a CONST_DECL. */
align = TYPE_ALIGN (TREE_TYPE (exp));
-#ifdef CONSTANT_ALIGNMENT
if (CONSTANT_CLASS_P (exp))
align = (unsigned) CONSTANT_ALIGNMENT (exp, align);
-#endif
+
known_alignment = true;
}
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 4fe8eb1..d4d3a56 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1273,6 +1273,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define WORD_REGISTER_OPERATIONS 0
#endif
+#ifndef CONSTANT_ALIGNMENT
+#define CONSTANT_ALIGNMENT(EXP, ALIGN) ALIGN
+#endif
+
#ifdef GCC_INSN_FLAGS_H
/* Dependent default target macro definitions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index f95646c..f5a1f84 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -1098,7 +1098,7 @@ that is being placed in memory. @var{constant} is the constant and
have. The value of this macro is used instead of that alignment to
align the object.
-If this macro is not defined, then @var{basic-align} is used.
+The default definition just returns @var{basic-align}.
The typical use of this macro is to increase alignment for string
constants to be word aligned so that @code{strcpy} calls that copy
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index 2383fb9..9d5ac0a 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -1048,7 +1048,7 @@ that is being placed in memory. @var{constant} is the constant and
have. The value of this macro is used instead of that alignment to
align the object.
-If this macro is not defined, then @var{basic-align} is used.
+The default definition just returns @var{basic-align}.
The typical use of this macro is to increase alignment for string
constants to be word aligned so that @code{strcpy} calls that copy
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 2ebac89..7fa2e7b 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -1043,7 +1043,6 @@ align_variable (tree decl, bool dont_output_data)
if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
align = data_align;
#endif
-#ifdef CONSTANT_ALIGNMENT
if (DECL_INITIAL (decl) != 0
/* In LTO we have no errors in program; error_mark_node is used
to mark offlined constructors. */
@@ -1056,7 +1055,6 @@ align_variable (tree decl, bool dont_output_data)
if (! DECL_THREAD_LOCAL_P (decl) || const_align <= BITS_PER_WORD)
align = const_align;
}
-#endif
}
}
@@ -1097,7 +1095,6 @@ get_variable_align (tree decl)
if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
align = data_align;
#endif
-#ifdef CONSTANT_ALIGNMENT
if (DECL_INITIAL (decl) != 0
/* In LTO we have no errors in program; error_mark_node is used
to mark offlined constructors. */
@@ -1110,7 +1107,6 @@ get_variable_align (tree decl)
if (! DECL_THREAD_LOCAL_P (decl) || const_align <= BITS_PER_WORD)
align = const_align;
}
-#endif
}
return align;
@@ -3286,9 +3282,7 @@ build_constant_desc (tree exp)
architectures so use DATA_ALIGNMENT as well, except for strings. */
if (TREE_CODE (exp) == STRING_CST)
{
-#ifdef CONSTANT_ALIGNMENT
DECL_ALIGN (decl) = CONSTANT_ALIGNMENT (exp, DECL_ALIGN (decl));
-#endif
}
else
align_variable (decl, 0);
@@ -3743,13 +3737,10 @@ force_const_mem (machine_mode mode, rtx x)
/* Align the location counter as required by EXP's data type. */
align = GET_MODE_ALIGNMENT (mode == VOIDmode ? word_mode : mode);
-#ifdef CONSTANT_ALIGNMENT
- {
- tree type = lang_hooks.types.type_for_mode (mode, 0);
- if (type != NULL_TREE)
- align = CONSTANT_ALIGNMENT (make_tree (type, x), align);
- }
-#endif
+
+ tree type = lang_hooks.types.type_for_mode (mode, 0);
+ if (type != NULL_TREE)
+ align = CONSTANT_ALIGNMENT (make_tree (type, x), align);
pool->offset += (align / BITS_PER_UNIT) - 1;
pool->offset &= ~ ((align / BITS_PER_UNIT) - 1);