blob: 8c45fa5045690f01fb8d815c9ff226fee150fbf4 [file] [log] [blame]
Richard Smith2c9f87c2012-08-24 00:54:33 +00001// RUN: %clang_cc1 -fcatch-undefined-behavior -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
Chris Lattnerc24b9c42010-04-10 18:34:14 +00002
3// PR6805
Nuno Lopes9eecef12012-05-07 20:23:03 +00004// CHECK: @foo
Chris Lattnerc24b9c42010-04-10 18:34:14 +00005void foo() {
6 union { int i; } u;
Nuno Lopes9eecef12012-05-07 20:23:03 +00007 // CHECK: objectsize
Nuno Lopes4ccf0042012-05-08 01:54:53 +00008 // CHECK: icmp uge
Chris Lattnerc24b9c42010-04-10 18:34:14 +00009 u.i=1;
10}
Nuno Lopes9eecef12012-05-07 20:23:03 +000011
12// CHECK: @bar
13int bar(int *a) {
Richard Smith2c9f87c2012-08-24 00:54:33 +000014 // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
15 // CHECK-NEXT: icmp uge i64 %[[SIZE]], 4
16
17 // CHECK: %[[PTRINT:.*]] = ptrtoint
18 // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 3
19 // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
Nuno Lopes9eecef12012-05-07 20:23:03 +000020 return *a;
21}