aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-02-27 19:16:44 +0000
committerRichard Stallman <rms@gnu.org>1993-02-27 19:16:44 +0000
commitce2fb2459b747b9895c9eaa9a1b1014c6b332ff7 (patch)
tree2d524e61c919eb92ccc5637e0caa24857ff3a458 /gcc
parente0c72e782e0dc60432eb0d9e0c3a790e34dd2a9b (diff)
downloadgcc-ce2fb2459b747b9895c9eaa9a1b1014c6b332ff7.zip
gcc-ce2fb2459b747b9895c9eaa9a1b1014c6b332ff7.tar.gz
gcc-ce2fb2459b747b9895c9eaa9a1b1014c6b332ff7.tar.bz2
(make_decl_rtl): Print an error for explicit register variable
whose type cannot be stored in that register. From-SVN: r3561
Diffstat (limited to 'gcc')
-rw-r--r--gcc/varasm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index c40a2fa..961d340 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -333,6 +333,9 @@ make_decl_rtl (decl, asmspec, top_level)
error ("function declared `register'");
else if (DECL_REGISTER (decl) && TYPE_MODE (TREE_TYPE (decl)) == BLKmode)
error_with_decl (decl, "data type of `%s' isn't suitable for a register");
+ else if (DECL_REGISTER (decl)
+ && ! HARD_REGNO_MODE_OK (reg_number, TYPE_MODE (TREE_TYPE (decl))))
+ error_with_decl (decl, "register number for `%s' isn't suitable for the data type");
/* Now handle properly declared static register variables. */
else if (DECL_REGISTER (decl))
{