diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-04-09 21:51:08 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-04-09 21:51:08 +0200 |
commit | f66d8ec8cad7d28d81b3ce55af92fb0169f8edeb (patch) | |
tree | 56c73dc57db10b175afc7f8555c35f76881ce281 /gcc/ubsan.c | |
parent | 8fd827b8e58b04cdefeb3d5c4de4d53566fdc3ff (diff) | |
download | gcc-f66d8ec8cad7d28d81b3ce55af92fb0169f8edeb.zip gcc-f66d8ec8cad7d28d81b3ce55af92fb0169f8edeb.tar.gz gcc-f66d8ec8cad7d28d81b3ce55af92fb0169f8edeb.tar.bz2 |
re PR tree-optimization/65709 (Bad code for LZ4 decompression with -O3 on x86_64)
PR tree-optimization/65709
* ubsan.c (instrument_mem_ref): Use TREE_TYPE (base) instead of
TREE_TYPE (TREE_TYPE (t)).
* c-c++-common/ubsan/align-9.c: New test.
From-SVN: r221958
Diffstat (limited to 'gcc/ubsan.c')
-rw-r--r-- | gcc/ubsan.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/ubsan.c b/gcc/ubsan.c index b9d9f30..701e9f2 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -1232,9 +1232,9 @@ instrument_mem_ref (tree mem, tree base, gimple_stmt_iterator *iter, tree t = TREE_OPERAND (base, 0); if (!POINTER_TYPE_P (TREE_TYPE (t))) return; - if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (TREE_TYPE (t))) && mem != base) + if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (base)) && mem != base) ikind = UBSAN_MEMBER_ACCESS; - tree kind = build_int_cst (TREE_TYPE (t), ikind); + tree kind = build_int_cst (build_pointer_type (TREE_TYPE (base)), ikind); tree alignt = build_int_cst (pointer_sized_int_node, align); gcall *g = gimple_build_call_internal (IFN_UBSAN_NULL, 3, t, kind, alignt); gimple_set_location (g, gimple_location (gsi_stmt (*iter))); |