[llvm-bugs] [Bug 28834] New: @llvm.objectsize treats allocsize differently than allocas.
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Wed Aug  3 13:39:37 PDT 2016
    
    
  
https://llvm.org/bugs/show_bug.cgi?id=28834
            Bug ID: 28834
           Summary: @llvm.objectsize treats allocsize differently than
                    allocas.
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: ASSIGNED
          Severity: normal
          Priority: P
         Component: Global Analyses
          Assignee: george.burgess.iv at gmail.com
          Reporter: george.burgess.iv at gmail.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified
For the purposes of evaluating `@llvm.objectsize(%p)`, we're meant to treat `%p
= call i8* @foo(i32 5)` the same as `%p = alloca i8, i32 5` (assuming @foo has
the allocsize attribute).
This seems not to be the case. Given:
```
void bos(char *a, char *b) {
  g0 = __builtin_object_size(a, 0);
  g1 = __builtin_object_size(b, 1);
}
void bos1() {
  char cs[5], cz[8];
  bos(cs, cz);
}
```
We generate (with clang trunk, -O2):
```
define void @bos1() {
entry:
  store i32 5, i32* @g0, align 4
  store i32 8, i32* @g1, align 4
  ret void
}
```
Which is good. Given its allocsize equivalent:
```
// N.B. alloc_size DNE in clang yet.
void *malloc2(int n) __attribute((alloc_size(1)));
void allocsize(int a, int b) {
  void *p = malloc2(a);
  g0 = __builtin_object_size(p, 0);
  void *v = malloc2(b);
  g1 = __builtin_object_size(v, 1);
}
void allocsize1() {
  allocsize(5, 8);
}
```
We get:
```
define void @allocsize1() {
entry:
  store i32 -1, i32* @g0, align 4
  store i32 -1, i32* @g1, align 4
  ret void
}
```
...Those -1s should be 5 and 8.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160803/c99f5aec/attachment.html>
    
    
More information about the llvm-bugs
mailing list