diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2009-03-30 14:29:10 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2009-03-30 07:29:10 -0700 |
commit | 680e8a004a9a664e55fde3239d7c7820290439ac (patch) | |
tree | bb7dc43f1552a80996378dc47189d317330a16c1 /gcc | |
parent | 133f9369c382006e841e9b940e060cbb4911edcf (diff) | |
download | gcc-680e8a004a9a664e55fde3239d7c7820290439ac.zip gcc-680e8a004a9a664e55fde3239d7c7820290439ac.tar.gz gcc-680e8a004a9a664e55fde3239d7c7820290439ac.tar.bz2 |
re PR target/38781 (PR38151: valgrind finds problem)
2008-03-30 H.J. Lu <hongjiu.lu@intel.com>
PR target/38781
* config/i386/i386.c (classify_argument): Check total size of
structure.
From-SVN: r145292
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 13 |
2 files changed, 12 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1215863..8ac2321 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-30 H.J. Lu <hongjiu.lu@intel.com> + + PR target/38781 + * config/i386/i386.c (classify_argument): Check total size of + structure. + 2009-03-30 Martin Jambor <mjambor@suse.cz> * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST, diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3dec02f..09a6597 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4942,6 +4942,8 @@ classify_argument (enum machine_mode mode, const_tree type, } else { + int pos; + type = TREE_TYPE (field); /* Flexible array member is ignored. */ @@ -4970,13 +4972,10 @@ classify_argument (enum machine_mode mode, const_tree type, + bit_offset) % 256); if (!num) return 0; - for (i = 0; i < num; i++) - { - int pos = - (int_bit_position (field) + (bit_offset % 64)) / 8 / 8; - classes[i + pos] = - merge_classes (subclasses[i], classes[i + pos]); - } + pos = (int_bit_position (field) + (bit_offset % 64)) / 8 / 8; + for (i = 0; i < num && (i + pos) < words; i++) + classes[i + pos] = + merge_classes (subclasses[i], classes[i + pos]); } } } |