aboutsummaryrefslogtreecommitdiff
path: root/gcc/ubsan.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2015-04-09 21:51:08 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2015-04-09 21:51:08 +0200
commitf66d8ec8cad7d28d81b3ce55af92fb0169f8edeb (patch)
tree56c73dc57db10b175afc7f8555c35f76881ce281 /gcc/ubsan.c
parent8fd827b8e58b04cdefeb3d5c4de4d53566fdc3ff (diff)
downloadgcc-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.c4
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)));