C u r s i n g C
- m
p i l e r s
S t e p h a n B e r g m a n n O c t
- b
C u r s i n g C o m p i l e r s S t e p h a n - - PowerPoint PPT Presentation
C u r s i n g C o m p i l e r s S t e p h a n B e r g m a n n O c t o b e r 2 0 1 7 < s b e r g > b t w , I t h i n k I ' l l d o a p r o s a n d c o n s o f
s b e r g > b t w , I t h i n k I ' l l d
“ p r
a n d c
s
f a s c i s t t
c h a i n s ” t a l k a t L O C
t h
s t e n > s b e r g : s
n d s f u n i n d e e d
p e c i a l a t t i r e r e q u i r e d f
a t t e n d a n c e ?
j u s t b r i n g s u p p l y
s
t v e g e t a b l e s ? : )
s b e r g > t h
s t e n , I ' l l c
c e n t r a t e
t h e p r
, s
h e r e ' l l b e n
s e f
r
t e n t
a t
s
t h
s t e n > d a m n
b u
j a g a > a f a s c i s t t
c h a i n i s c h a r a c t e r i z e d b y d i c t a t
i a l p
e r a n d f
c i b l e s u p p r e s s i
p
i t i
W h y d
s G e r r i t c
p l a i n a b
t m y c h a n g e ? ”
I t c
p i l e d j u s t fi n e h e r e ! ”
W h
e m
e d t h a t c
e I w a s s t i l l w
k i n g
? ”
I t i s n ’ t s u p p
e d t
e u n u s e d ! ”
b a d s t a t i c s c s t y l e c a s t e x t e r n v a r l
v a r t
m a l l p t r v e c t
s a l b
s t a t i c m e t h
s u n n e c e s s a r y
e r r i d e b l
k b l
k d a t a m e m b e r s h a d
f a i l e d d y n c a s t n u l l p t r r a n g e d f
c
y s a l l
a r e a s s t r i n g c
c a t u n n e c e s s a r y p a r e n c a s t t
d d e r e f n u l l p t r fi n a l p r
e c t
l e n d i a n r e d u n d a n t c a s t s a l u n i c
e l i t e r a l s t r i n g c
s t a n t u n
n y c h a r r i g h t s h i f t d l l p r i v a t e fl a t t e n
e r r i d e r e d u n d a n t c
y s f x p
i t e m s t r i n g s t a t i c u n r e f f u n c h e c k c
fi g m a c r
d y n c a s t v i s i b i l i t y f p c
p a r i s
e r r i d e p a r a m r e d u n d a n t i n l i n e s i m p l i f y b
s u b t l e z e r
n i t u n u s e d v a r i a b l e c h e c k c
m a
e r a t
d y n e x c s p e c i m p l i c i t b
c
v e r s i
p a s s p a r a m s b y r e f r e d u n d a n t p
n t e r
s s t a t i c a c c e s s u n i c
e t
h a r v c l w i d g e t s c
s t s t r i n g v a r e x p r e s s i
a l w a y s z e r
n l i n e v i s i b l e p a s s s t u f f b y r e f r e f c
n t i n g s t a t i c a n
y m
s u n n e c e s s a r y c a t c h t h r
w e a k
j e c t c p p u n i t a s s e r t e q u a l s e x t e r n a n d n
d e fi n e d l i t e r a l t
c
v e r s i
p r i v a t e b a s e r e s e r v e d i d
1 p l u g i n s t h a t a r e e n a b l e d b y d e f a u l t :
b a d s t a t i c s c s t y l e c a s t e x t e r n v a r l
v a r t
m a l l p t r v e c t
s a l b
s t a t i c m e t h
s u n n e c e s s a r y
e r r i d e b l
k b l
k d a t a m e m b e r s h a d
f a i l e d d y n c a s t n u l l p t r r a n g e d f
c
y s a l l
a r e a s s t r i n g c
c a t u n n e c e s s a r y p a r e n c a s t t
d d e r e f n u l l p t r fi n a l p r
e c t
l e n d i a n r e d u n d a n t c a s t s a l u n i c
e l i t e r a l s t r i n g c
s t a n t u n
n y c h a r r i g h t s h i f t d l l p r i v a t e fl a t t e n
e r r i d e r e d u n d a n t c
y s f x p
i t e m s t r i n g s t a t i c u n r e f f u n c h e c k c
fi g m a c r
d y n c a s t v i s i b i l i t y f p c
p a r i s
e r r i d e p a r a m r e d u n d a n t i n l i n e s i m p l i f y b
s u b t l e z e r
n i t u n u s e d v a r i a b l e c h e c k c
m a
e r a t
d y n e x c s p e c i m p l i c i t b
c
v e r s i
p a s s p a r a m s b y r e f r e d u n d a n t p
n t e r
s s t a t i c a c c e s s u n i c
e t
h a r v c l w i d g e t s c
s t s t r i n g v a r e x p r e s s i
a l w a y s z e r
n l i n e v i s i b l e p a s s s t u f f b y r e f r e f c
n t i n g s t a t i c a n
y m
s u n n e c e s s a r y c a t c h t h r
w e a k
j e c t c p p u n i t a s s e r t e q u a l s e x t e r n a n d n
d e fi n e d l i t e r a l t
c
v e r s i
p r i v a t e b a s e r e s e r v e d i d
1 p l u g i n s t h a t a r e e n a b l e d b y d e f a u l t :
t r u c t S { i n t f ( ) { r e t u r n ; } / / l
l u g i n : s t a t i c m e t h
s } ; i n t g ( S * s ) { r e t u r n s
f ( ) ; }
t r u c t S { s t a t i c i n t f ( ) { r e t u r n ; } } ; i n t g ( S * s ) { r e t u r n s
f ( ) ; } / / l
l u g i n : s t a t i c a c c e s s
t r u c t S { s t a t i c i n t f ( ) { r e t u r n ; } } ; i n t g ( ) { r e t u r n S : : f ( ) ; }
t r u c t S { i n t f ( ) { ( v
d ) t h i s ; / / l
l u g i n : s t a t i c m e t h
s r e t u r n ; } } ; i n t g ( S * s ) { r e t u r n s
f ( ) ; }
. . n
u n l i k e i n t e = s
e F n ( ) ; a s s e r t ( e ! = ) ; ( v
d ) e ;
l a s s T e s t { v
d t e s t 1 ( ) { … } v
d t e s t 2 ( ) { … } v
d t e s t 3 ( ) { … } C P P U N I T _ T E S T _ S U I T E ( T e s t ) ; C P P U N I T _ T E S T ( t e s t 1 ) ; C P P U N I T _ T E S T ( t e s t 2 ) ; C P P U N I T _ T E S T ( t e s t 3 ) ; C P P U N I T _ T E S T _ S U I T E _ E N D ( ) ; } ;
P P U N I T _ T E S T _ S U I T E ( T e s t ) ; C P P U N I T _ T E S T ( t e s t 1 ) ; C P P U N I T _ T E S T ( t e s t 2 ) ; C P P U N I T _ T E S T ( t e s t 3 ) ; C P P U N I T _ T E S T ( t e s t 4 ) ; C P P U N I T _ T E S T ( t e s t 5 ) ; C P P U N I T _ T E S T ( t e s t 6 ) ; C P P U N I T _ T E S T ( t e s t 7 ) ; C P P U N I T _ T E S T ( t e s t 8 ) ; C P P U N I T _ T E S T ( t e s t 9 ) ; C P P U N I T _ T E S T ( t e s t 1 ) ; C P P U N I T _ T E S T _ S U I T E _ E N D ( ) ;
e m p
a r i l y
i s a b l e
e r r
f i t d
s n ’ t s u i t e y
r n e e d s , c h a n g e i t
l
l u g i n : f
→ c
p i l e r p l u g i n s / c l a n g / f
c x x
a n y p l u g i n s h a v e w h i t e l i s t s i n t h e c
e
i t h e r b a s e d
s p e c i fi c i d e n t i fi e r s ,
s
r c e fi l e s / h i e r a r c h i e s
t r u c t S { c h a r b [ 3 ] ; } ; c h a r b u f [ 2 ] ; v
d f ( s t r u c t S c
s t * s ) { a s s e r t ( s t r l e n ( s
b ) = = 1 ) ; s n p r i n t f ( b u f , s i z e
( b u f ) , " %s " , s
b ) ; }
c c
a l l
t e s t . c
a r n i n g : ‘ s n p r i n t f ’
t p u t m a y b e t r u n c a t e d b e f
e t h e l a s t f
m a t c h a r a c t e r [
f
m a t
r u n c a t i
= ]
t r u c t S { c h a r b [ 3 ] ; } ; c h a r b u f [ 2 ] ; v
d f ( s t r u c t S c
s t * s ) { a s s e r t ( s t r l e n ( s
b ) = = 1 ) ; ( v
d ) s n p r i n t f ( b u f , s i z e
( b u f ) , " %s " , s
b ) ; }
c c
a l l
t e s t . c
a r n i n g : ‘ s n p r i n t f ’
t p u t m a y b e t r u n c a t e d b e f
e t h e l a s t f
m a t c h a r a c t e r [
f
m a t
r u n c a t i
= ]
t r u c t S { c h a r b [ 3 ] ; } ; c h a r b u f [ 2 ] ; v
d f ( s t r u c t S c
s t * s ) { a s s e r t ( s t r l e n ( s
b ) = = 1 ) ; i n t d u mmy = s n p r i n t f ( b u f , s i z e
( b u f ) , " %s " , s
b ) ; ( v
d ) d u mmy ; }
c c
a l l
t e s t . c
t r u c t S { c h a r b [ 3 ] ; } ; c h a r b u f [ 2 ] ; v
d f ( s t r u c t S c
s t * s ) { a s s e r t ( s t r l e n ( s
b ) = = 1 ) ; i n t d u mmy = s n p r i n t f ( b u f , s i z e
( b u f ) , " %s " , s
b ) ; ( v
d ) d u mmy ; }
c c
a l l
t e s t . c
a r n i n g : ‘ s n p r i n t f ’
t p u t m a y b e t r u n c a t e d b e f
e t h e l a s t f
m a t c h a r a c t e r [
f
m a t
r u n c a t i
= ]
C C 7 b u g 8 3 5 4